请教下 Spring Cloud GateWay 网关的鉴权和数据权限, 怎么把 token 转换成用户信息 进入其他服务?

请教下 Spring Cloud GateWay 网关的鉴权和数据权限, 怎么把 token 转换成用户信息 进入其他服务?,第1张

请教下 Spring Cloud GateWay 网关的鉴权和数据权限, 怎么把 token 转换成用户信息 进入其他服务?,第2张

例如简单判断有没有权限调用某个接口,我在 gateway 里的 filter 判断一下这个 token 存不存在 redis 中(token -> 用户信息).

假设现在有个接口是 api.test.com/user/mail/list/ 接口, 需要传入 userId, 获取到这个用户的邮件列表, 怎么让 gateway 转发请求到 user-service 时, 将请求 header 里的 token 转化为 userId,

userController 里的方法可能是这样的 List<mail> mailList(Long userId);</mail>

除了网关外其他服务 RPC 调用该接口, 也可以只传入 userId 参数 这样的请问该怎么实现?

如果是以前的方法,我可能会把这个方法改为 List<mail> mailList(Long usrId,HttpServletRequest request);</mail>

然后取出 request 中的 token,去 redis 中验证一下, 然后去取出 userId, 但是这样 其他 b.c.d..服务要是 fegin RPC 调用 这个方法时, 就也需要传入 HttpServletRequest/或者 token.

请教下大佬,Spring Cloud GateWay 网关的鉴权和数据权限该怎么做?

----------------------- 以下是精选回复-----------------------

答:网关调鉴权服务完事把用户信息和权限列表写到 header
答:filter 里面读出 userId 来,再往业务服务传递不就行了
答:也就是说其它里面的 Service 不做安全验证,这样跟裸奔有什么差别。
答:既然用到 Redis,直接上 Spring Session ( Redis )就好了,Session 里面想丢什么就什么了,一个用户对象也可以。
答:用 Spring Session+Spring Security 控制安全就可以了,https://github.com/hantsy/spring-microservice-sample
答:不知道这种思维方式哪里来的。。。
你网关是会对外吧,如果别人能够进入你网关呢?不一样可以再进入里面的服务。
答:实现 GlobalFilter 接口之后使用 ServerWebExchange.getRequest().mutate().header(String headerName, String... headerValues)这个方法就行
答:如果 JWT 可以满足要求, 不需要用 redis 来存 token, gateway 可以只验证 jwt 是否有效, 然后取出 jwt 里的 userId, 转发请求的时候, 再把 userId 放到 header 里

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 请教下 Spring Cloud GateWay 网关的鉴权和数据权限, 怎么把 token 转换成用户信息 进入其他服务?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情