package com.nju.edu.pay.web; import com.nju.edu.pay.util.jwt.JWTUtil; import com.nju.edu.pay.web.annotation.RootAllowed; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.lang.reflect.Method; public class AuthenticationInterceptor implements HandlerInterceptor { @Autowired JWTUtil jwtUtil; @Override public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object object) throws Exception { HandlerMethod handlerMethod=(HandlerMethod)object; Method method=handlerMethod.getMethod(); if (method.isAnnotationPresent(RootAllowed.class)) { RootAllowed passToken = method.getAnnotation(RootAllowed.class); if (passToken.required()) { String token=httpServletRequest.getHeader("Authorization"); return jwtUtil.verifyToken(token); } } return true; } @Override public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { } }