zoukankan      html  css  js  c++  java
  • 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;
            }
        }
    }
  • 相关阅读:
    Golang-数据类型-int类型
    Golang基础知识-变量
    16.和input相关的知识点
    14.ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库
    12.登录页面左右切换。
    10.用js下载文件(需要后端链接)
    9.用js制作静态分页
    8.一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?
    7.前端性能优化的方法
    iOS
  • 原文地址:https://www.cnblogs.com/leiziv5/p/10868292.html
Copyright © 2011-2022 走看看