spring boot security 实现根据情况跳转不同页面功能

Posted yhjjgj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot security 实现根据情况跳转不同页面功能相关的知识,希望对你有一定的参考价值。

在配置主类添加代码

技术分享图片
@Override
        protected void configure(HttpSecurity http) throws Exception {
             http.authorizeRequests()
             .antMatchers(new String[]{"/js/**","/css/**","/picture/**","/images/**","/fonts/**","/**/favicon.ico"}).permitAll()
             .antMatchers("/home/*").permitAll()
             .anyRequest().authenticated()
            // .antMatchers(StaticParams.PATHREGX.NOAUTH,StaticParams.PATHREGX.CSS,StaticParams.PATHREGX.JS,StaticParams.PATHREGX.IMG).permitAll()//无需访问权限   
             //.antMatchers(StaticParams.PATHREGX.AUTHADMIN).hasAuthority(StaticParams.USERROLE.ROLE_ADMIN)//admin角色访问权限
             //.antMatchers(StaticParams.PATHREGX.AUTHUSER).hasAuthority(StaticParams.USERROLE.ROLE_USER)//user角色访问权限  StaticParams自定义枚举
             .and()
         .formLogin().successHandler(zhu())  //配置过滤器
             .loginPage("/login")
             .failureUrl("/login?error")
             //.defaultSuccessUrl("/equipment/getIndex", true)
             .permitAll()
             .and()
         .logout()
             .invalidateHttpSession(true) //是否清除Http session中的内容
             .permitAll().and()
         .csrf()                              //关闭csrf验证
             .disable();
        }
        
    @Bean
    public MyAuthenticationSuccessHandler zhu() {
        return new MyAuthenticationSuccessHandler();   //自写的security过滤器
    }
View Code

新建MyAuthenticationSuccessHandler 实现AuthenticationSuccessHandler接口

/**
 * 
 * security跳转过滤器
 * @author 苏俊源
 *
 */
@Component   //定义filter类
public class MyAuthenticationSuccessHandler implements AuthenticationSuccessHandler  {

    @Override
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication arg2)
            throws IOException, ServletException {
        // TODO Auto-generated method stub
         String f = request.getParameter("f");    //login前端页面表单中添加name为f的隐藏字段
            if (StringUtils.isNotEmpty(f)) {  
                if(f.equals("su")){  
                    //response.setCharacterEncoding("UTF-8");  
                    //response.getWriter().write("登录成功123");  
                    response.sendRedirect("/");
                }  
                  
            }else{  
                  
                request.getRequestDispatcher("/").forward(request, response);  
                              
            }  
    }

 

以上是关于spring boot security 实现根据情况跳转不同页面功能的主要内容,如果未能解决你的问题,请参考以下文章

Spring boot + Spring Security实现权限管理

带有 spring-boot 和 spring-security 的 JWT

spring boot + jwt + spring security前后端分离实现权限控制

Security安全认证 | Spring Boot如何集成Security实现安全认证

如何将 Spring Security 与 Spring Boot Rest API 一起使用?

Spring Boot如何集成Security实现安全认证