SecurityInterceptor.java 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package com.config.RoleInterceptor;
  2. import com.fasterxml.jackson.databind.ObjectMapper;
  3. import com.util.GetTokenData;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.stereotype.Component;
  6. import org.springframework.web.method.HandlerMethod;
  7. import org.springframework.web.servlet.HandlerInterceptor;
  8. import org.springframework.web.servlet.ModelAndView;
  9. import javax.management.OperationsException;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. import java.util.Map;
  13. @Component
  14. public class SecurityInterceptor implements HandlerInterceptor {
  15. @Autowired
  16. GetTokenData getTokenData;
  17. @Autowired
  18. ObjectMapper objectMapper;
  19. @Override
  20. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  21. System.out.println("preHandle");
  22. if (!handler.getClass().isAssignableFrom(HandlerMethod.class)) {
  23. System.out.println("cat cast handler to HandlerMethod.class");
  24. return true;
  25. }
  26. // 获取注解
  27. Auth auth = ((HandlerMethod) handler).getMethod().getAnnotation(Auth.class);
  28. if (auth == null) {
  29. System.out.println("cant find @Auth in this uri:" + request.getRequestURI());
  30. return true;
  31. }
  32. // 从参数中取出用户身份并验证
  33. String admin = auth.user();
  34. System.out.println("auth:"+admin);
  35. String token = request.getHeader("token");
  36. Map<String, String> resultMap = getTokenData.getTokenData(token);
  37. System.out.println("user:" + resultMap.get("role"));
  38. if (!admin.equals(resultMap.get("role"))) {
  39. System.out.println("permission denied");
  40. throw new OperationsException("权限不足");
  41. }
  42. return true;
  43. }
  44. @Override
  45. public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
  46. System.out.println("2");
  47. }
  48. @Override
  49. public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
  50. System.out.println("3");
  51. }
  52. }