Вопрос

У меня проблема с функциями аутентификации сервлета 3.0:

С помощью этого кода в сервлете V3:

log.info(""+request.getUserPrincipal());
log.info(""+request.getAuthType());
log.info("===^===");
request.logout() ;
log.info(""+request.getUserPrincipal());
log.info(""+request.getAuthType());
request.authenticate(response) ;
log.info("===v===");
log.info(""+request.getUserPrincipal());
log.info(""+request.getAuthType());

я бы всегда ожидайте увидеть окна имени пользователя / входа из-за logout() функция. Вместо этого, кажется, это механизм «кэша», который повторяет учетные данные и отмените мой выход ...

Админ

БАЗОВЫЙ

===^===

нулевой

нулевой

=== v ===.

Админ

БАЗОВЫЙ

Это проблема с моим Firefox, или что-то не хватало в сервлете?

Это было полезно?

Решение

Я всегда ожидаю увидеть окна имени пользователя / входа в систему из-за logout() функция. Вместо этого, кажется, это механизм «кэша», который повторяет учетные данные и отмените мой выход ...

Вот так, как был спроектирован HTTP Basic Auth, он позволяет хранить все аутентификационное состояние в клиенте. Другими словами, его невозможный Чтобы выйти с Basic / Digest аутентификации, сервер не может остановить кэширование клиента и отправлять базовый аутентификатор AUTH AUTHION на последующие запросы на сервер.

Мое предложение состоит в том, чтобы использовать форму аутентификации на основе формы и login метод HTTPServletRequest.

использованная литература

Другие советы

Это ни один. После входа в систему, браузер всегда будет передавать свой идентификатор пользователя и пароль к URL-адресу. Пока вы не перезапустите браузер. Насколько я знаю, каждый браузер делает это. И, насколько я знаю, в настоящее время нет возможности сказать браузеру, чтобы забыть о полномочиях.

Тем не менее, вы увидите, что ваша сессия будет отличаться, как только вы выходите. Обычное решение - добавить переменную какой-то к сеансу. Скажи «Логигин». Если эта переменная отсутствует, вы знаете, что пользователь должен сначала войти в систему, и вы перенасматриваете, чтобы сказать Login.jsp. И как только пользователь пройдет этот JSP, вы снова установили эту переменную.

Использование фильтров, вы можете обеспечить эту систему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top