@
MeloForsaken 不是公共依赖,就拦截过滤
网关->鉴权->网关,这种是把请求转发给 Spring Cloud Gateway 匹配路由执行 Filters ,Filter 把权限信息加在 Headers 之后 Spring Cloud Gateway 再自己把请求转发给业务后端,相当于总共反代两次
还有一种常见的是类似微服务的形式,鉴权服务不管实际请求,只提供鉴权 HTTP API ,网关收到请求把信息发给鉴权 HTTP API ,拿到权限信息添加到 Headers 转发给后端
比如用 Nginx + ngx_lua 可以在 rewrite_by_lua 阶段请求鉴权 HTTP API ,把响应的权限信息写入 Nginx 变量,通过 proxy_set_header 传递给后端
location /openapi/ {
set $authinfo '';
rewrite_by_lua_block {
... resty.http 请求鉴权内网 HTTP API
ngx.var.authinfo = 响应的权限信息;
}
proxy_set_header "AuthInfo" $authinfo;
proxy_pass ...请求内网后端的反代配置
}
这样后端就可以在 HTTP Header 的 AuthInfo 里取当前用户和权限信息了