request.getRemoteUser () иногда возвращает ноль - PullRequest
4 голосов
/ 26 августа 2011

У меня есть java-веб-приложение, использующее struts2 в сочетании со старыми сервлетами.Использование безопасности Acegi.

В моих сервлетах я веду журнал того, что пытается сделать пользователь и каким пользователем он является.Чтобы заставить пользователя использовать request.getRemoteUser()

Но, к моему большому удивлению, результат не соответствует.В большинстве случаев getRemoteUser() возвращает правильное имя пользователя, но время от времени я получаю нулевое значение.

В чем может быть причина этого?

РЕДАКТИРОВАТЬ: После вашегообратная связь Я понял, что URL-адреса сервлетов вообще не защищены.Так что это может привести к тому, что getRemoteUser() будет нулевым.Сейчас я реализую безопасность для них и проведу еще несколько тестов, прежде чем публиковать результаты.

Ответы [ 3 ]

3 голосов
/ 26 августа 2011

getRemoteUser() вернет пользователя, вошедшего в систему, иначе вернет ноль.

Какой тип аутентификации вы используете (Jaas с basic / digest и т. Д.)?

Вы видите эту ошибку для определенных URL (сервлетов)? В этом случае этот URL может иметь другие ограничения безопасности.

Другая причина заключается в том, что клиент (браузер) не отправляет имя пользователя с запросом. Это может произойти, если вы находитесь за пределами дерева URL, которое запрашивает аутентификацию.

2 голосов
/ 27 августа 2011

Фильтровал ли форма входа по Acegi Security (loginFormUrl из AuthenticationProcessingFilterEntryPoint )?

Если да, получите имя пользователя, вошедшего в систему, по

SecurityContextHolder.getContext().getAuthentication().getName();
2 голосов
/ 26 августа 2011

doc говорит, почему вы получаете ноль:

Возвращает логин пользователя, выполняющего этот запрос, если пользователь прошел аутентификацию, или ноль, если пользовательне был аутентифицирован.То, будет ли имя пользователя отправлено с каждым последующим запросом, зависит от браузера и типа аутентификации.То же, что и значение переменной CGI REMOTE_USER.

Вам необходимо изучить браузер, который вызывает проблему.

...