Ver código fonte

update 优化 satoken 异常信息 强制返回json格式

疯狂的狮子Li 10 meses atrás
pai
commit
5ecb06f2d9

+ 9 - 1
ruoyi-gateway/src/main/java/org/dromara/gateway/filter/AuthFilter.java

@@ -7,6 +7,7 @@ import cn.dev33.satoken.reactor.filter.SaReactorFilter;
 import cn.dev33.satoken.router.SaRouter;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.dev33.satoken.util.SaResult;
+import cn.dev33.satoken.util.SaTokenConsts;
 import org.dromara.common.core.constant.HttpStatus;
 import org.dromara.common.core.utils.SpringUtils;
 import org.dromara.common.core.utils.StringUtils;
@@ -15,6 +16,7 @@ import org.dromara.gateway.config.properties.IgnoreWhiteProperties;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.http.server.reactive.ServerHttpResponse;
 
 /**
  * [Sa-Token 权限认证] 拦截器
@@ -61,6 +63,8 @@ public class AuthFilter {
                         // }
                     });
             }).setError(e -> {
+                ServerHttpResponse response = SaReactorSyncHolder.getExchange().getResponse();
+                response.getHeaders().set(SaTokenConsts.CONTENT_TYPE_KEY, SaTokenConsts.CONTENT_TYPE_APPLICATION_JSON);
                 if (e instanceof NotLoginException) {
                     return SaResult.error(e.getMessage()).setCode(HttpStatus.UNAUTHORIZED);
                 }
@@ -80,7 +84,11 @@ public class AuthFilter {
             .setAuth(obj -> {
                 SaHttpBasicUtil.check(username + ":" + password);
             })
-            .setError(e -> SaResult.error(e.getMessage()).setCode(HttpStatus.UNAUTHORIZED));
+            .setError(e -> {
+                ServerHttpResponse response = SaReactorSyncHolder.getExchange().getResponse();
+                response.getHeaders().set(SaTokenConsts.CONTENT_TYPE_KEY, SaTokenConsts.CONTENT_TYPE_APPLICATION_JSON);
+                return SaResult.error(e.getMessage()).setCode(HttpStatus.UNAUTHORIZED);
+            });
     }
 
 }