Выход сервлета 3.0 не работает
-
04-10-2019 - |
Вопрос
У меня проблема с функциями аутентификации сервлета 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, вы снова установили эту переменную.
Использование фильтров, вы можете обеспечить эту систему.