Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring security多重登录过程不支持';我不知道该怎么做_Java_Spring_Spring Security - Fatal编程技术网

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)
    中的最后一个被触发

  • 失败处理程序会被触发,但也是最后一个,不管我请求的URL是什么,它都会抛出404错误(我可以看到它在调试期间在正确的控制器上运行)。也许瓷砖在失败过程中不起作用

  • 这是我的安全配置:

    @配置
    @启用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(请求,响应);
    }
    }
    
    如果你们知道好的资源,很难找到合适的工作良好的多重登录处理资源