SaTokenConfigure.java 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package com.kym.admin.config;
  2. import cn.dev33.satoken.annotation.SaIgnore;
  3. import cn.dev33.satoken.context.SaHolder;
  4. import cn.dev33.satoken.interceptor.SaInterceptor;
  5. import cn.dev33.satoken.stp.StpUtil;
  6. import org.slf4j.Logger;
  7. import org.slf4j.LoggerFactory;
  8. import org.springframework.context.annotation.Configuration;
  9. import org.springframework.web.method.HandlerMethod;
  10. import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
  11. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
  12. /**
  13. * @author skyline
  14. * @description 权限校验
  15. * @date 2023-07-11 21:49
  16. */
  17. @Configuration
  18. public class SaTokenConfigure implements WebMvcConfigurer {
  19. private static final Logger log = LoggerFactory.getLogger(SaTokenConfigure.class);
  20. // 注册拦截器
  21. @Override
  22. public void addInterceptors(InterceptorRegistry registry) {
  23. // 注册 Sa-Token 拦截器,校验规则为 StpUtil.checkLogin() 登录校验。
  24. registry.addInterceptor(new SaInterceptor(handler -> {
  25. // 1. 通过请求路径判断:login 接口不鉴权
  26. String path = SaHolder.getRequest().getRequestPath();
  27. if ("/admin-user/login".equals(path)) {
  28. log.debug("SaInterceptor: 跳过 login 接口鉴权");
  29. return;
  30. }
  31. // 2. 检查 @SaIgnore 注解,有则跳过鉴权
  32. if (handler instanceof HandlerMethod hm) {
  33. if (hm.hasMethodAnnotation(SaIgnore.class)
  34. || hm.getBeanType().isAnnotationPresent(SaIgnore.class)) {
  35. log.debug("SaInterceptor: @SaIgnore 跳过鉴权 - {}", hm.getMethod().getName());
  36. return;
  37. }
  38. }
  39. StpUtil.checkLogin();
  40. }))
  41. .addPathPatterns("/**")
  42. .excludePathPatterns(
  43. "/wx/*",
  44. "/finance/export/*",
  45. "/admin-user/login",
  46. "/**/error",
  47. "/**/pullEnStations/*",
  48. "/**/*.html",
  49. "/**/*.js",
  50. "/**/*.css",
  51. "/**/*.png",
  52. "/**/*.ico",
  53. "/",
  54. "/h5/**",
  55. "/parking-coupon/**"
  56. );
  57. // TODO: 2023-07-11 具体功能权限校验后续开发
  58. }
  59. }