puzhibing
2026-08-28 f103c8c1e09e2475dc4ac4d3ddc1598146e4da38
ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java
@@ -38,6 +38,9 @@
@Component
public class AuthFilter implements GlobalFilter, Ordered {
   private static final Logger log = LoggerFactory.getLogger(AuthFilter.class);
   /** 小程序token可访问的管理后台路径前缀白名单 */
   private static final String[] APPLET_SYSTEM_WHITELIST = { "/system/faq/" };
   
   // 排除过滤的 uri 地址,nacos自行添加
   @Autowired
@@ -81,6 +84,11 @@
      String userid = JwtUtils.getUserId(claims);
      String username = JwtUtils.getUserName(claims);
      String userType = JwtUtils.getUserType(claims);
      // 小程序token禁止访问管理后台 /system/** 接口(白名单除外)
      if ("applet".equals(userType) && !isAppletAllowed(url)) {
         return unauthorizedResponse(exchange, "无权限访问该接口");
      }
      
      // 设置用户信息到请求
      addHeader(mutate, SecurityConstants.USER_KEY, userkey);
@@ -91,6 +99,23 @@
      removeHeader(mutate, SecurityConstants.FROM_SOURCE);
      return chain.filter(exchange.mutate().request(mutate.build()).build());
   }
   /**
    * 小程序token是否允许访问该路径
    * @param url 请求路径
    * @return true=允许
    */
   private boolean isAppletAllowed(String url) {
      if (!url.startsWith("/system/")) {
         return true;
      }
      for (String whitelist : APPLET_SYSTEM_WHITELIST) {
         if (url.startsWith(whitelist)) {
            return true;
         }
      }
      return false;
   }
   
   private void addHeader(ServerHttpRequest.Builder mutate, String name, Object value) {
      if (value == null) {