|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Victor Wagner 2:5020/400 12 Jan 2006 12:31:02 To : "Alexander V. Gaiduk" Subject : Re: Logout -------------------------------------------------------------------------------- Alexander V. Gaiduk <gav@arhcity.ru> wrote: AVG>доброго времени суток. AVG>есть средствами Apache авторизованный доступ к каталогу AVG>посредством "AuthType Basic" AVG>как с помощью эхотага сделать Logout ? т.е. кликнув на AVG>ссылку нужно чтоб бровзер забыл имя и пароль, и при AVG>попытке повторного запроса к закрытому каталогу опять AVG>выкинул окошко с логином. AVG>если, конечно, это возможно. Сделать это надежно - крайне нетривиально. В rfc 2617, в котором описана Basic authentication такого не предусмотрено, поэтому приходится извращаться. В принципе можно сделать следующее - когда клиент приходит на скрипт, на которой указывает ссылка "logout", ему выдают HTTP-код 401 (Authorization required) c тем же realm. Т.е. говорят "мужик, твой пароль больше не годится". Тогда браузер пароль забудет. Hо... Получив 401 браузер ТУТ ЖЕ выкинет окошко для ввода логина/пароля, и предложит ввести другой пароль. А после того как юзер его введет, отправит его по ТОЙ ЖЕ URL. Соответственно, скрипт должен как-то отличить первый раз зашел к нему этот пользователь (и тогда выдавать 401 на валидный пароль) или не первый (и тогда честно проверять пароль и редиректить в более другое место в случае правильного пароля). Единственный плюс-минус надежный (с точностью до юзеров с нетривиальными настройками браузера) способ сделать это, известный мне - это выставлять куку в HTTP response с кодом 401. И если пользователь пришел уже с этой кукой, считать что он ввел новый пароль, проверять его, а куку сносить. Интерфейс при этом получается неидеальный - при нажатии кнопки logout у пользователя вылетает окошко "а залогинься ты под другим именем". И реальный логаут получается, только если юзер там cancel нажмет. В общем, красиво можно сделать, только если не использовать Basic Authentication, а городить свою систему авторизации, например на тех же куках. -- --- ifmail v.2.15dev5.3 * Origin: Free Net of Leninsky,45 (2:5020/400) Вернуться к списку тем, сортированных по:
Архивное /ru.cgi.perl/15178cfd584b3.html, оценка из 5, голосов 10
|