У меня проблема, которая очень странная для меня, поэтому, возможно, кто-то может помочь. Внутри моего security.xml я это:Spring Security authenticationSuccessHandler и j_security_check
<http auto-config="true">
<intercept-url pattern="/app/admin/**" access="ROLE_ADMIN"/>
<intercept-url pattern="/app/**" access="ROLE_ADMIN,ROLE_USER"/>
<form-login login-page="/login" authentication-failure-url="/login?error=true" login-processing-url="/j_security_check" authentication-success-handler-ref="authSuccessHandler"/>
<remember-me user-service-ref="userDao" key="e37f4b31-0c45-11dd-bd0b-0800200c9a66" authentication-success-handler-ref="authSuccessHandler"/>
</http>
Все работало отлично, пока я не добавил: аутентификация успех обработчик-исй = «authSuccessHandler», который прост и выглядит следующим образом:
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
logger.info("authenticated");
User user = userManager.getUserByUsername(request.getRemoteUser());
Hibernate.initialize(user.getMessagesList());
request.getSession(true).setAttribute("userMessages", user.getMessagesList());
}
Теперь, когда все работает полностью, проблема заключается в том, что при каждом входе в систему или в имени пользователя RememberMe первая доступная страница является ВСЕЙ пустой, независимо от URL-адреса. И при обычном входе в систему страница, которая выглядит пустым, это/j_security_check, поэтому кажется, что что-то не обрабатывается из-за моего обработчика успеха, как и ожидалось при удалении обработчика, все работает нормально. Я что-то упустил? пожалуйста, помогите мне.
Спасибо, что это была проблема. Мне пришлось переключиться на: SecurityContextHolder.getContext(). GetAuthentication(). GetName() вместо request.getRemoteUser(), поскольку это не работало с логином j_security_check, но все работает так, как должно быть сейчас! – Dustin
Интеграция весенней безопасности работает только после того, как «SecurityContextHolderAwareRequestFilter» выполнил свою работу. Этот фильтр выполняется после фильтра, который обрабатывает форму-логин. Так что 'request.getRemoteUser()' еще не работает. –