Spring boot(四)-拦截器

81 阅读1分钟
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>2.0.14</version>
</dependency>
  • 构建登录验证拦截
@Slf4j
public class AuthenticationInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 获取拦截的请求
        String requestURI = request.getRequestURI();
        log.info("拦截的请求-: " + requestURI);
        // 获取请求header中的token
        String token = request.getHeader("token");
        // 未登录
        if (token == null) {
            response.getWriter().write(JSON.toJSONString(GResponse.error("not login!")));
            return false;
        }
        return HandlerInterceptor.super.preHandle(request, response, handler);
    }
}
  • 配置拦截器
@Configuration
public class GenshinMvcConfigurer implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 设置拦截的路径
        List<String> addPathPatterns = new ArrayList<>(); //Arrays.asList("/*");
        addPathPatterns.add("/**");
        // 设置排除的路径
        List<String> excludePathPatterns = Arrays.asList("/test/**","/user/login");
        registry.addInterceptor(new AuthenticationInterceptor())
                .addPathPatterns(addPathPatterns)
                .excludePathPatterns(excludePathPatterns);
    }
}