拦截器-登录检查与静态资源放行

HandlerInterceptor

1.编写拦截器拦截逻辑---实现HandlerInterceptor 接口

public class LoginIntercepter implements HandlerInterceptor {
    // 登录检查逻辑
    private boolean isLogin(HttpServletRequest request,HttpServletResponse response) throws Exception {
        // 登录检查逻辑
        HttpSession session = request.getSession();
        Object loginUser = session.getAttribute("loginUser");
        if( loginUser != null){
            return true;
        }else {
            request.setAttribute("msg","請先登錄");
            request.getRequestDispatcher("/").forward(request,response);
            return false;
        }
    }

    //目标方法执行完成前
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        String requestURI = request.getRequestURI();
        log.info("攔截的請求路徑是{}",requestURI);
        return isLogin(request.getSession(),response);
    }

    //目标方法执行完成后
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                    @Nullable ModelAndView modelAndView) throws Exception {
    }
    // 页面渲染后
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
                         @Nullable Exception ex) throws Exception {
    }

2.将拦截器注册到容器中 --- 实现WebMvcConfigurer 的 addInterceptors方法

@Configuration
public class WebAdminConfig implements WebMvcConfigurer {
    // 添加拦截器方法
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginIntercepter())  // 添加自定义拦截器
                .addPathPatterns("/**") // 拦截所有路径,包括靜態資源
                .excludePathPatterns("/","/login","/css/**"); // 放行路径
                                                   
    }

}

放行静态资源

  • 方法1:在配置类的添加拦截器方法中添加放行路径
registry.excludePathPatterns("/靜態資源路径/**");
  • 方法2:
    1.在配置文件中添加静态资源匹配路径

2.在所有页面的静态资源路径中使用相对的静态资源路径

posted @ 2021-08-21 18:39  潮哥啊边伦个  阅读(297)  评论(0)    收藏  举报