HandlerInterceptor 拦截器拿不到前端请求的token的问题

本文讨论了如何在处理HTTPOPTIONS请求时,正确放行以获取token,强调了对安全策略的理解和应用。
        String token ="";
        if(request.getMethod().equals("OPTIONS")){
            return true;
        }else{
            token = request.getHeader("token");
        }

OPTIONS请求是需要放行的,放行之后就可以拿到token了

### Spring Boot 中 `WebMvcConfigurer` 配置的拦截器不放行前端请求解决方案 当遇到 `WebMvcConfigurer` 配置的拦截器始终拦截前端请求而不放行的情况时,可以考虑以下几个方面来解决问题。 #### 1. 检查拦截器配置 确保在实现 `addInterceptors` 方法时正确指定了需要拦截和不需要拦截的URL模式。如果未排除特定路径,则所有请求都会被拦截[^3]。 ```java @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyCustomInterceptor()) .addPathPatterns("/api/**") // 添加需要拦截的路径 .excludePathPatterns("/login", "/register"); // 排除不需要拦截的路径 } ``` #### 2. 实现合理的业务逻辑判断 在自定义拦截器中实现 `preHandle` 方法时,应该加入适当的条件判断以决定是否允许请求继续执行。例如可以通过检查 Session 或 Token 来验证用户身份: ```java @Component public class MyCustomInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpSession session = request.getSession(false); if (session != null && session.getAttribute("user") != null){ return true; // 放行请求 }else{ response.sendError(HttpServletResponse.SC_UNAUTHORIZED,"User not logged in"); return false; } } ... } ``` #### 3. 确认应用上下文加载顺序 有时由于Bean初始化顺序问题可能导致某些资源未能及时准备好而影响到拦截器的行为。可通过调整依赖注入的方式或者使用 `@DependsOn` 注解等方式尝试解决此类潜在冲突[^4]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值