zoukankan      html  css  js  c++  java
  • springboot 配置自定义拦截器

    自定义AuthcInterceptor拦截器类
    @Component
    @Order(value = 1)
    public class AuthcInterceptor implements HandlerInterceptor {
    
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            //Authenticate 认证
            //Authorization 鉴权
            if (!(handler instanceof HandlerMethod)) return true;
            //存在NoNeedLogin注解 就不做登录认证了  NoNeedLogin自定义的注解  首先登录接口就需要添加上该注解
            if (((HandlerMethod) handler).getMethodAnnotation(NoNeedLogin.class) != null) return true;
    
            String token = request.getHeader("authenticate");

    //这里根据请求头的信息判断用户是否登录状态 不是登录状态的话 返回401状态 并抛出异常 NoLoginException 是自定义状态类
    //需要配置全局拦截类检测到该异常信息就返回必要信息给客户端,告知客户端未登录需要登录 response.setStatus(401);
    throw new NoLoginException();
    //这里直接返回true就可以,因为没有登录状态我们也需要返回一些信息 return true; } }
     


    自定义配置类 实现 WebMvcConfigurer 类
    @Configuration
    public class MvcConfig implements WebMvcConfigurer {
    
        @Autowired
        private AuthcInterceptor loginInterceptor;
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            List<String> excludePathPatterns = new ArrayList<>();
            excludePathPatterns.add("/error");
            //排除拦截swagger-api接口
            excludePathPatterns.add("/swagger-resources/**");
            //登录的接口在这里排除 或者 拦截器注解处理
            registry.addInterceptor(loginInterceptor).addPathPatterns("/**")
                    .excludePathPatterns(excludePathPatterns);
        }
    
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            //处理静态文件拦截问题
            registry.addResourceHandler("/**").addResourceLocations("classpath:/META-INF/resources/",
                    "classpath:/resources/", "classpath:/static/", "classpath:/public/");
            registry.addResourceHandler("/wabjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
        }
    
    }
  • 相关阅读:
    android 设置时间和日期
    android 对话框
    android notification 通知
    android 动画(转载)
    js的作用域题
    js高级
    js中级6
    js中级小知识5
    js中级小知识4
    js中级小知识3
  • 原文地址:https://www.cnblogs.com/rchao/p/13853342.html
Copyright © 2011-2022 走看看