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分页插件,实现查询分页展示
posted @ 2020-10-21 15:30  一粒盐  阅读(66)  评论(0编辑  收藏  举报