我们正在使用双管齐下的方法进行用户身份验证,我们在群集环境中使用内存中身份验证令牌存储,并将令牌保存在共享数据库中。现在,我可以使用内存存储获取令牌并对用户进行身份验证。一切都按预期工作。
我正在寻找以下内容:
如果服务器重新启动,那么我仍然可以从数据库验证令牌。(如果用户名密码正确。)
@Component 公共类CustomAuthSuccessHandler实现AuthenticationSuccessHandler {
@Override
public void onAuthenticationSuccess(HttpServletRequest request,
HttpServletResponse response, Authentication authentication)
throws IOException, ServletException {
System.out.println(request);
System.out.println(response);
}
}
以下是我的HTTP设置:
@Override
public void configure(HttpSecurity http) throws Exception {
http.exceptionHandling()
.authenticationEntryPoint(customAuthenticationEntryPoint)
.and()
.logout()
.logoutUrl("/oauth/logout")
.logoutSuccessHandler(customLogoutSuccessHandler)
.and()
.csrf()
.requireCsrfProtectionMatcher(
new AntPathRequestMatcher("/oauth/authorize"))
.disable().headers().frameOptions().disable()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and().authorizeRequests().antMatchers("/hello/")
.permitAll().antMatchers("/secure/**").authenticated();
}
PS:看起来添加一个拦截器可能有所帮助,但是我不知道如何从响应中获取令牌。有什么建议吗?