与 Spring 拦截器相比,Spring MVC 拦截器可以在内部获取 HttpServletRequest 和 HttpServletResponse 等 Web 对象实例。
Spring MVC 拦截器的顶级接口是:HandlerInterceptor,它包含三个方法:

  • preHandle:在目标方法执行前执行。
  • postHandle:在目标方法执行后执行。
  • afterCompletion:在请求完成时执行。

为了方便起见,在一般情况下,我们通常使用 HandlerInterceptor 接口的实现类 HandlerInterceptorAdapter。
如果存在权限认证、日志记录和统计等场景,可以使用此拦截器。

第一步,通过继承 HandlerInterceptorAdapter 类定义一个拦截器:

public class AuthInterceptor extends HandlerInterceptorAdapter {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String requestUrl = request.getRequestURI();
        if (checkAuth(requestUrl)) {
            returntrue;
        }
        returnfalse;
    }

    private boolean checkAuth(String requestUrl) {
        System.out.println("===Authority Verification===");
        returntrue;
    }
}

第二步,在 Spring 容器中注册此拦截器。

@Configuration
public class WebAuthConfig extends WebMvcConfigurerAdapter {
    @Bean
    public AuthInterceptor getAuthInterceptor() {
        return new AuthInterceptor();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new AuthInterceptor());
    }
}

随后,当请求接口时,Spring MVC 可以通过此拦截器自动拦截接口并验证权限。

最后修改:2025 年 08 月 13 日
个人博客