четверг, 23 августа 2012 г.

Basic authorization logout

Как разлогиниться, если используешь Basic-авторизацию или, по-другому, HTTP-авторизацию?
Как оказалось не так уж просто, но все же возможно, причем вся логика - на серверной стороне, а значит метод кроссбраузерный!

Все что потребуется - контролировать пару флагов в сессии.
Суть в том, что если юзер авторизован - в сессии хранится его ID, а раз уж ID есть, то и пароль с логином спрашивать ни к чему. Однако есть и другой флаг, назовем его reauth, который показывает, что мы затребовали выход из системы.
При взведении этого флага сессия юзера очищается, а логин-пароль принудительно прячутся (т.е. метод getEnvLoginPasswd() просто говорит "а нету, пытай меня сволочь немецкая!"), это важно, иначе чуда не произойдет.