• XX需求分析系统每日进度(三)


    添加路径拦截功能

    思路:默认拦截所有路径,放开一些不重要的路径,其他路径根据登录拦截器判断是否放行

    • 主要代码如下
    1. 登录拦截器
    @Component
    public class LoginInterceptor implements HandlerInterceptor {
    
        @Autowired
        ReqSearchServiceImpl service;
    
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    
            //1、获得cookie
            Cookie[] cookies=request.getCookies();
            //没有cookie信息,则重定向到登录界面
            if(null==cookies){
                response.sendRedirect(request.getContextPath()+"/toLoginPage");
                return false;
            }
            // 定义cookie_username,用户的一些登录信息,例如用户名,密码等
            String username=null;
            //获取cookie里面的一些用户信息
            for (Cookie item : cookies) {
                if("username".equals(item.getName())){
                    username=item.getValue();
                    break;
                }
            }
            //如果cookie里面没有包含用户的一些登录信息,则重定向到登录界面
            if(StringUtils.isEmpty(username)){
                response.sendRedirect(request.getContextPath()+"/toLoginPage");
                return false;
            }
            //获取HttpSession对象
            HttpSession session=request.getSession();
            //获取我们登录后存在session中的用户信息,如果为空,表示session已经过期
            Object object=session.getAttribute("user");
            if(null==object){
                //将用户保存到session中
                UserMore userMore=service.getUserByUsername(username);
                session.setAttribute("user",userMore);
            }
            //已经登录
            return true;
        }
    }
    
    

    1. web配置类
    @Configuration
    public class WebConfigurer implements WebMvcConfigurer {
    
        @Autowired
        private LoginInterceptor loginInterceptor;
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            InterceptorRegistration ir=registry.addInterceptor(loginInterceptor);
            //拦截路径
            ir.addPathPatterns("/*");
            //不拦截路径
            List<String> irs=new ArrayList<>();
            irs.add("/toLoginPage");
            irs.add("/getVerify");
            irs.add("/checkVerify");
            irs.add("/toRegisterPage");
            irs.add("/addUser");
            irs.add("/getLoginResult");
            ir.excludePathPatterns(irs);
        }
    }
    
    

    明天任务:学习mybatis分页插件,实现查询分页展示
  • 相关阅读:
    Visual Studio 连接不上NuGet 官方程序包源的解决办法
    Microsoft Toolkit 2.5下载 – 一键激活Windows 8.1/2012 R2/Office 2013
    Intel® Ethernet Connection I217-V 网卡驱动(win10 ,2012)
    flashfxp3.41中文版注册码:(适合最新版本)
    Fiddler对安卓应用手机抓包图文教程
    网址检查器1.0
    Win10打不开chm文件的解决办法
    Android HTTP通讯
    对Android开发者有益的40条优化建议
    IIS下PHP的三种配置方式比较
  • 原文地址:https://www.cnblogs.com/weixiao1717/p/13904952.html
Copyright © 2020-2023  润新知