# SpringBoot 配置全局的URL拦截器(登录判断)

SpringBoot 配置全局的URL拦截器(登录判断)

定义拦截器:实现HandlerInterceptor类,重写三个方法
  • 我通过session中的用户信息去判断是否已经登录,当没有登录的时候,抛出NoLoginException自定义异常,然后到全局 的异常处理类中,捕获这个异常,对它进行处理。全局异常类就不说了,之前的全局异常处理那篇博客说了。
public class UrllInterceptor extends BaseController implements HandlerInterceptor {

    private Logger logger= Logger.getLogger(UrllInterceptor.class);

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        CurrentUser currentUser = getCurrentUser(request);
        String requestURI = request.getRequestURI();
        if(requestURI.contains("/login")){
            return true;
        } else if(currentUser==null){
            logger.info("==========当前用户没有登录");
            response.setStatus(201);
            // 抛出没有登录的异常,在全局异常中进行处理
            throw new NoLoginException("没有登录请重新登录!");
        }
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        logger.info("==========请求Url:"+request.getRequestURL()+"    "+"==========请求状态:"+response.getStatus());
    }
}

配置WebMvcConfigurer
  • 如果配置了druid、swagger等文件上传等接口的时候,需要在这里进行放行
@Configuration
public class UrlConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //注册TestInterceptor拦截器
        InterceptorRegistration registration = registry.addInterceptor(new UrllInterceptor());
        registration.addPathPatterns("/**");                      //所有路径都被拦截
        registration.excludePathPatterns(                         //添加不拦截路径
                "你的登陆路径",            //登录
                "/**/*.html",            //html静态资源
                "/**/*.js",              //js静态资源
                "/**/*.css",             //css静态资源
                "/**/*.woff",
                "/**/*.ttf"
        );
    }
}

总之实现比较简单,详细可见码云地址https://gitee.com/Marlon_Brando/back.git

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值