spring boot 全局拦截器
在Spring Boot中实现统一拦截的方式是使用拦截器 Interceptor
可以创建一个自定义的拦截器来处理用户登录
创建一个实现HandlerInterceptor接口的自定义拦截器类, 例如CustomInterceptor
java
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
public class CustomInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// 在请求处理之前进行拦截
if (!isUserLoggedIn()) {
response.sendRedirect("/login");
return false; // 终止请求继续处理
}
return HandlerInterceptor.super.preHandle(request, response, handler);
}
@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 {
// 整个请求完成之后调用,可用于资源清理等操作
}
private boolean isUserLoggedIn() {
// 检查用户是否已登录的逻辑
// 返回true表示已登录,返回false表示未登录
}
}
注册拦截器,可以在WebConfig类中进行配置
java
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.tao.privatecloud.interceptor.CustomInterceptor;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new CustomInterceptor()).addPathPatterns("/**").excludePathPatterns("/login", "/init", "/error", "/favicon.ico");
}
}