package com.zhentao.intercepoter; import com.zhentao.config.NullLogin; import com.zhentao.tool.TokenUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @Component public class Userinterceptor implements HandlerInterceptor { @Autowired private RedisTemplate redisTemplate; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String requestURI = request.getRequestURI(); if (requestURI.startsWith("/user/login")||requestURI.startsWith("/user/register")){ return true; } String token = request.getHeader("token"); HandlerMethod handlerMethod = (HandlerMethod) handler; NullLogin annotation = handlerMethod.getMethod().getAnnotation(NullLogin.class); System.err.println("自定义注解"+annotation); if (annotation!=null){ return true; } if (token==null){ System.err.println("Token不能为空"); return false; } String userIdFromToken = TokenUtils.getUserIdFromToken(token); System.err.println("解析后的ID:"+userIdFromToken); String s = redisTemplate.opsForValue().get(userIdFromToken); if (s!=null && s.equals(token)){ return true; }else { System.err.println("Token错误"); return false; } } }