提交 89c9e5af authored 作者: 李秋林's avatar 李秋林

登录错误或过期时,返回报错信息

上级 9f3d61ca
......@@ -22,7 +22,7 @@
<dependency>
<groupId>com.wangxiaolu</groupId>
<artifactId>wangxiaolu-promotion-common</artifactId>
<version>0.0.1</version>
<version>0.0.2</version>
</dependency>
<dependency>
......
......@@ -7,6 +7,7 @@ import com.promotion.gateway.data.UserDataService;
import com.wangxiaolu.promotion.common.redis.RedisKeys;
import com.wangxiaolu.promotion.result.basedata.R;
import com.wangxiaolu.promotion.result.basedata.RCode;
import com.wangxiaolu.promotion.result.basedata.StatusCode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
......@@ -51,21 +52,20 @@ public class AuthGlobalFilter implements GlobalFilter, Ordered {
// 1、判断url是否放行
boolean isIgnore = whiteUrls.stream().anyMatch(url::contains);
if (isIgnore) {
log.info("非校验URL放行:{}", url);
return chain.filter(exchange);
}
// 2、未登录请求跳转登录
String token = exchange.getRequest().getHeaders().getFirst("Authorization");
if (StringUtils.isBlank(token)) {
return loginError(exchange);
return loginError(exchange,RCode.NOT_LOGIN_ERROR);
}
// 3、验证token
JSONObject userJson = userDataService.getUserByToken(RedisKeys.UserKeys.TEMPORARY_TOKEN.getKey() + token);
if (Objects.isNull(userJson)) {
log.info("token登录错误:{}", token);
return loginError(exchange);
log.info("访问URL:{},token登录错误:{}", url,token);
return loginError(exchange,RCode.NOT_LOGIN_TIMEOUT_ERROR);
}
ServerHttpRequest httpRequest = exchange.getRequest().mutate().header("loginId", userJson.getString("id")).header("loginQcId", userJson.getString("qcId")).build();
return chain.filter(exchange.mutate().request(httpRequest).build());
......@@ -76,11 +76,11 @@ public class AuthGlobalFilter implements GlobalFilter, Ordered {
return -2;
}
private Mono<Void> loginError(ServerWebExchange exchange) {
private Mono<Void> loginError(ServerWebExchange exchange, StatusCode statusCode) {
ServerHttpResponse response = exchange.getResponse();
response.setStatusCode(HttpStatus.OK);
response.getHeaders().add("Content-Type", "application/json;charset=UTF-8");
R res = new R(RCode.NOT_LOGIN_ERROR);
R res = new R(statusCode);
DataBuffer buffer = response.bufferFactory().wrap(new Gson().toJson(res).getBytes(StandardCharsets.UTF_8));
return response.writeWith(Flux.just(buffer));
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论