「已注销」 2022-12-04 14:26 采纳率: 100%
浏览 22
已结题

spingboot项目,拦截器爆红,急急急!

问题遇到的现象和发生背景

spingboot项目,拦截器这里爆红

img

正常的运行结果应是控制台下有个输出信息“拦截器进入”的,但这里拦截器没有执行到!

img

用代码块功能插入代码,请勿粘贴截图

这里是拦截器的逻辑
package com.example.portalweb.interceptor;

import ch.qos.logback.core.LogbackException;
import com.example.base.annotations.TokenCheck;
import com.example.util.JwtUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.security.auth.login.LoginException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;

public class AuthInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

    System.out.println("拦截器进入");

    //用户登录后会把token下发到用户端,用户端会把token存在客户端中,
    //每次请求后就不是在正文参数中带上token,而是把token放到请求头里!
    String token = request.getHeader("token");
    if (StringUtils.isBlank(token)){

// throw new LoginException("token 为空");
return false;
}

    HandlerMethod handlerMethod = (HandlerMethod) handler;
    Method method = handlerMethod.getMethod();

    if (method.isAnnotationPresent(TokenCheck.class)){
        TokenCheck annotation = method.getAnnotation(TokenCheck.class);
        if (annotation.required()){
            //校验token
            try {
                JwtUtil.parseToken(token);
                return true;
            }catch (Exception e){
                return false;
            }
        }
    }
    return true;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}

}

这是Controller层
@PostMapping("/edit")
@TokenCheck //拦截器解析这个注解
public ResultWrapper edit(@RequestBody Userbackgroundtable userbackgroundtable){
return userbackgroundtableService.edit(userbackgroundtable);
}

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

3条回答 默认 最新

  • 龙猫爱抓鱼 2022-12-04 14:50
    关注

    你把鼠标悬浮在报错的代码上,看看提示什么呢

    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月17日
  • 专家已采纳回答 12月9日
  • 创建了问题 12月4日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助