Java Spring security多重登录过程不支持';我不知道该怎么做
我正在遭受多重登录处理的痛苦 我已经搜索了很多关于它的信息,但是没有一个答案是有效的 我编写了两个登录处理程序,一个用于管理员,另一个用于普通用户 并且还编写了每个成功和失败处理程序,但处理程序始终使用Java Spring security多重登录过程不支持';我不知道该怎么做,java,spring,spring-security,Java,Spring,Spring Security,我正在遭受多重登录处理的痛苦 我已经搜索了很多关于它的信息,但是没有一个答案是有效的 我编写了两个登录处理程序,一个用于管理员,另一个用于普通用户 并且还编写了每个成功和失败处理程序,但处理程序始终使用@order(2)配置中的最后一个处理程序,即使我请求/admin 我的问题是: 我可以登录,但成功处理程序总是作为@order(2)中的最后一个被触发 失败处理程序会被触发,但也是最后一个,不管我请求的URL是什么,它都会抛出404错误(我可以看到它在调试期间在正确的控制器上运行)。也许瓷砖在失
@order(2)
配置中的最后一个处理程序,即使我请求/admin
我的问题是:
@order(2)
中的最后一个被触发@配置
@启用Web安全性
@AllArgsConstructor
公共类SecurityConfig扩展了WebSecurity配置适配器{
私有用户服务impl用户服务;
@豆子
公共密码编码器PasswordEncoder(){
返回新的BCryptPasswordEncoder();
}
@凌驾
public void configure(WebSecurity web)引发异常{
web.igning().antMatchers(
“/css/**”,
“/js/**”,
“/img/**”,
“/font/**”,
“/html/**”,
“/jusopopp”,
“favicon.ico”
);
}
@配置
@订单(1)
@诺尔格构装师
公共静态类AdminConfigurationAdapter扩展了WebSecurity配置适配器{
@凌驾
受保护的无效配置(HttpSecurity http)引发异常{
http
.antMatcher(“/admin/**”)
.授权请求()
.anyRequest().hasRole(“管理员”)
.及()
.formLogin()
.loginPage(“/admin/login”)
.defaultSuccessUrl(“/admin”)
.failureHandler(adminFailureHandler())
.permitAll()
.及()
.logout()
.logoutRequestMatcher(新的AntPathRequestMatcher(“/logout”))
.logoutSuccessUrl(“/”)
.invalidateHttpSession(真)
.及()
.csrf().disable();
}
@豆子
公共身份验证SuccessHandler adminSuccessHandler(){
返回新的CustomLoginsAccessHandler(“/admin”);
}
@豆子
公共身份验证FailureHandler adminFailureHandler(){
返回新的CustomLoginFailureHandler(“/admin/login?error=true”);
}
}
@配置
@订单(2)
@诺尔格构装师
公共静态类NormalConfigurationAdapter扩展了WebSecurity配置适配器{
@凌驾
受保护的无效配置(HttpSecurity http)引发异常{
http
.授权请求()
.antMatchers(“/Ticketing/**”和“/**/write”).hasRole(“成员”)
.anyRequest().permitAll()
.及()
.formLogin()
.login页面(“/login”)
.successHandler(successHandler())
.failureHandler(failureHandler())
.permitAll()
.及()
.logout()
.logoutRequestMatcher(新的AntPathRequestMatcher(“/logout”))
.logoutSuccessUrl(“/”)
.invalidateHttpSession(真)
.及()
.headers()
.frameOptions().sameOrigin()
.及()
.csrf().disable();
}
@豆子
公共身份验证successHandler successHandler(){
返回新的CustomLoginsAccessHandler(“/”);
}
@豆子
公共身份验证failureHandler failureHandler(){
返回新的CustomLoginFailureHandler(“/login?error=true”);
}
}
@凌驾
public void configure(AuthenticationManagerBuilder auth)引发异常{
auth.userDetailsService(usersService).passwordEncoder(passwordEncoder());
}
}
类CustomLoginSAccessHandler扩展了SavedRequestStataWareAuthenticationSuccessHandler{
公共CustomLoginSAccessHandler(字符串defaultTargetUrl){
setDefaultTargetUrl(defaultTargetUrl);
}
@凌驾
验证成功时的公共无效(
HttpServletRequest请求,
HttpServletResponse,
身份验证
)抛出ServletException、IOException{
HttpSession session=request.getSession();
if(会话!=null){
字符串重定向URL=(字符串)session.getAttribute(“prevPage”);
if(重定向URL!=null){
删除属性(“prevPage”);
getRedirectStrategy().sendRedirect(请求、响应、重定向URL);
}否则{
super.onAuthenticationSuccess(请求、响应、身份验证);
}
}否则{
super.onAuthenticationSuccess(请求、响应、身份验证);
}
}
}
@吸气剂
@塞特
@AllArgsConstructor
类CustomLoginFailureHandler实现AuthenticationFailureHandler{
私有字符串defaultFailureUrl;
@凌驾
身份验证失败时的公共无效(
HttpServletRequest请求,
HttpServletResponse,
AuthenticationException异常
)抛出IOException、ServletException{
String errorMessage=“一些错误消息”;
setAttribute(“errorMessage”,errorMessage);
getRequestDispatcher(defaultFailureUrl).forward(请求,响应);
}
}
如果你们知道好的资源,很难找到合适的工作良好的多重登录处理资源