spring cloud gateway 重定向到登陸頁面的設置 繼承GlobalFilter,自定義filter ,前端是vue實現的。


轉: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 filter(ServerWebExchange exchange, GatewayFilterChain chain) {
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,就啥也沒了,他就啥也干不了拉。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM