Обычно Spring Security обрабатывает аутентификацию внутри своего собственного кода, используя ваш код в качестве стратегии (провайдеры аутентификации, службы пользовательских данных и т. Д.). Но вы можете обрабатывать аутентификацию внутри вашего собственного кода.
В коде вашего действия, когда учетные данные пользователя верны, вы:
- Создайте
Authentication
, содержащее имя пользователя и предоставленные роли (вы можете использовать UsernamePasswordAuthenticationToken
в качестве удобной реализации).
- Поместите его в контекст безопасности:
SecurityContextHolder.getContext().setAuthentication(auth);
- Передайте событие успешной аутентификации, используя
AuthenticationEventPublisher.publishAuthenticationSuccess(...)
(вы можете автоматически связать его из контекста или явно создать DefaultAuthenticationEventPublisher
).
- Перенаправить пользователя на защищенный ресурс, используя
SavedRequestAwareAuthenticationSuccessHandler.onAuthenticationSuccess(...)
.
Также вам необходимо предоставить AuthenticationEntryPoint
:
<bean id = "aep" class = "org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint">
<!-- Your login page -->
<property name = "loginFormUrl" value = "/login" />
</bean>
<security:http entry-point-ref="aep">
...
</http>
Однако, если вы на самом деле новичок в Spring, может быть, лучше избегать таких массовых настроек и использовать обычную архитектуру Spring Security.