问题分析
Spring Cloud Gateway 网关作为代理资源服务器,需要将 JWT 传递给下游资源服务器,下面是网关的配置
spring:
cloud:
gateway:
discovery:
locator:
enabled: true # 启用服务发现
lower-case-service-id: true
default-filters:
# 中继令牌
- TokenRelay
# 移除Cookie请求头,避免cookie透传到后端服务
- RemoveRequestHeader=Cookie
TokenRelay 激活 TokenRelayGatewayFilterFactory,将令牌中继传递给下游资源服务,例如系统服务 (youlai-system)
但是项目启动中会报错:
Unable to find GatewayFilterFactory with name TokenRelay
解决方案
参考链接:Spring Gateway and Auth0: IllegalArgumentException: Unable to find GatewayFilterFactory with name TokenRelay
TokenRelay 过滤器的工作原理是,当一个请求到达网关时,它会从请求中提取 JWT,然后将其添加到转发到资源服务器的请求头中。这样,资源服务器就可以从请求头中提取 JWT,并使用它来验证用户的身份和权限。
spring-boot-starter-oauth2-client 依赖包提供了 OAuth2 客户端的功能,包括处理和转发 JWT。在 Spring Cloud Gateway 中,它可以与 TokenRelay 过滤器一起工作,安全地处理和转发 JWT。
所以添加 oauth2-client 依赖即可文章来源:https://www.toymoban.com/news/detail-725316.html
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
参考文档
Spring Cloud Gateway 官方文档: The TokenRelay GatewayFilter Factory
文章来源地址https://www.toymoban.com/news/detail-725316.html
开源项目
微服务商城项目
Github | Gitee | |
---|---|---|
开源组织 | 有来开源组织 | 有来开源组织 |
后端 | youlai-mall 📖 | youlai-mall 📖 |
前端 | mall-admin🌎 | mall-admin 🌎 |
移动端 | mall-app 🌎 | mall-app 🌎 |
前后端分离项目
Github | Gitee | |
---|---|---|
开源组织 | 有来开源组织 | 有来开源组织 |
后端 | youlai-boot 📖 | youlai-boot 📖 |
前端 | vue3-element-admin 🌎 | vue3-element-admin 🌎 |
到了这里,关于Unable to find GatewayFilterFactory with name TokenRelay的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!