轉:https://blog.csdn.net/qq_27093465/article/details/109738027?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0.queryctrv4&spm=1001.2101.3001.4242.1&utm_relevant_index=3
在gateway做權限設置和路由,轉發請求到其他子服務模塊,要是token超時了,則需要給重定向到登陸頁面,前端使用vue.js實現。
@Component
public class JwtTokenFilter implements GlobalFilter, Ordered {
@Override
public Mono
ServerHttpResponse response = exchange.getResponse();
HttpCookie cookie = exchange.getRequest().getCookies().getFirst("TOKEN");
if (cookie != null) {
// NOTE: 服務間調用使用服務名,restTemplate必須加@LoadBalanced注解
Boolean ok = template.postForObject(authUrl, cookie.getValue(), Boolean.class);
if (ok != null && ok) {
return chain.filter(exchange);
}
}
String redirectUrl = "完整的URL地址,比如:
http://192.168.22.140:8002/index.html";
logger.info("bmg 重定向到URL: {}", redirectUrl);
response.getHeaders().set(HttpHeaders.LOCATION, redirectUrl);
//303狀態碼表示由於請求對應的資源存在着另一個URI,應使用GET方法定向獲取請求的資源
response.setStatusCode(HttpStatus.SEE_OTHER);
response.getHeaders().add("Content-Type", "text/plain;charset=UTF-8");
return response.setComplete();
}
@Override
public int getOrder() {
return 1;
}
}
vue的前端要想能正常工作,得返回給他個頁面,完整的html之類的,要是返回給他個json,就啥也沒了,他就啥也干不了拉。