• spring boot 之登录拦截


    登录拦截,请求的session里面有username者判断为登录状态
    @Configuration
    public class WebSecurityConfig  extends WebMvcConfigurerAdapter {
        @Bean
        public SecurityInterceptor getSecurityInterceptor() {
            return new SecurityInterceptor();
        }
    
        public void addInterceptors(InterceptorRegistry registry) {
            InterceptorRegistration addInterceptor = registry.addInterceptor(getSecurityInterceptor());
    
            addInterceptor.excludePathPatterns("/error");
            addInterceptor.excludePathPatterns("/plan/login**");
            addInterceptor.addPathPatterns("/web/**");
        }
    
        private class SecurityInterceptor extends HandlerInterceptorAdapter {
    
            @Override
            public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                    throws Exception {
                HttpSession session = request.getSession();
                if (session.getAttribute("username") != null)
                    return true;
                String url = "/plan/logins";
                response.sendRedirect(url);
                return false;
            }
        }
    }  

    使用redis 进行增强。
    获取的session 去判断在redis里面是否存在,存在可登录成功
    @Configuration
    public class WebSecurityConfig  extends WebMvcConfigurerAdapter {
        @Autowired
        private  RedisTemplate redisTemplate;
        private RedisTemplate userredis(RedisTemplate redisTemplate) {
            redisTemplate = RedisDbInit.initRedis(RedisConfig.userreidport, redisTemplate);
            return redisTemplate;
        }
        @Bean
        public SecurityInterceptor getSecurityInterceptor() {
            return new SecurityInterceptor();
        }
    
        public void addInterceptors(InterceptorRegistry registry) {
            InterceptorRegistration addInterceptor = registry.addInterceptor(getSecurityInterceptor());
    
            addInterceptor.excludePathPatterns("/error");
            addInterceptor.excludePathPatterns("/plan/login**");
            addInterceptor.addPathPatterns("/web/**");
        }
    
        private class SecurityInterceptor extends HandlerInterceptorAdapter {
    
            @Override
            public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                    throws Exception {
                String url = "/plan/logins";
                HttpSession session = request.getSession();
                if (session.getAttribute("username") != null){
                    String name= (String) userredis(redisTemplate).opsForValue().get(session.getAttribute("username"));
                    if (name==null){
                        response.sendRedirect(url);
                        return false;
                    }else {
                        return true;
                    }
                }
                response.sendRedirect(url);
                return false;
            }
        }
    }
  • 相关阅读:
    bzoj 2159 Crash 的文明世界
    bzoj 4241 历史研究
    数论大合集(柿子版)
    [IOI2005]mou
    CSP 2020 T3 函数调用
    线段树 --算法竞赛专题解析(24)
    树状数组 --算法竞赛专题解析(23)
    算法竞赛专题解析(22):数论--同余
    算法竞赛专题解析(21):数论--线性丢番图方程
    算法竞赛专题解析(20):数论--GCD和LCM
  • 原文地址:https://www.cnblogs.com/leiziv5/p/10868292.html
Copyright © 2020-2023  润新知