Spring Cloud 各服务之间的接口权限和数据权限 怎么实现? 每个controller serviceImpl 内都要添加token参数吗?

今天天气不错啊 发布于 2019/03/18 14:17
阅读 2K+
收藏 3

【华为云1024程序员节·向云而生】预约直播 抽14件华为电子产品礼包!>>>


不好意思, 发布不了, 请教坛友们平时是怎么解决的, 谢谢!

加载中
0
325G
325G

既然网关可以获取到userid 请求向后传递的时候把userid作为请求参数不就可以了

今天天气不错啊
今天天气不错啊
谢谢. zuul我还知道有这个东西, 怎么向后传递,我去查查.
0
紅顏為君笑
紅顏為君笑

直接使用Spring Security OAuth2轻松搞定你这个问题

用户访问服务使用token做身份验证

各个服务之间相互访问就使用客户端模式验证

今天天气不错啊
今天天气不错啊
谢谢. 有博客提到oauth2 ,我没有了解过, 对于怎么传递验证 需要搜索下..
0
混乱羽翼
混乱羽翼

1、Fegin拦截器传递在服务间传递token

2、每个独立的service设置拦截器,获取到token,从redis中取出user对象

3、拦截器或者AOP校验控制层的注解

 

不建议在Zuul或者Gataway中进行校验,我尝试过这个方案,很烦,特别是网关的URL和后端Service的URL不同的情况,需要做很多判断来决定那些资源是否需要进行拦截

今天天气不错啊
今天天气不错啊
回复 @混乱羽翼 : "抓取token转换为用户对象,然后进行对有注解的进行鉴权"是怎么样实现的?
今天天气不错啊
今天天气不错啊
回复 @混乱羽翼 : 服务A中写一个实现RequestInterceptor的Feign拦截器,带上request中的token,RPC调用服务B时,会自动把token传递过去.服务B写一个实现HandlerInterceptor的拦截器,在preHandle()方法中取出token. 接下来该怎么把token背后的user/userId 传递到controller中去?"
混乱羽翼
混乱羽翼
回复 @今天天气不错啊 : 1、feigin写一个拦截器,本身不校验,只是在报文头透传token就可以了 2、每一个被调用的服务,写一个控制层的拦截器,抓取token转换为用户对象,然后进行对有注解的进行鉴权
今天天气不错啊
今天天气不错啊
谢谢你的帮助. Fegin里要验证token的话, 那各个服务的serviceImpl方法里都得含有token参数了吧? 我看到会在serviceImpl里 rpc调用其他服务.
0
Joyzhou
Joyzhou

我的设计是对外访问的接口增加一个微服务,这个微服务只做查询聚合与数据转换,这样鉴权也只需要对这个微服务做处理。结构是

gateway -> api-provider -> micro1-provider

                                         -> micro2-provider

今天天气不错啊
今天天气不错啊
谢谢 你的帮助. 原来 gateway和zuul是两个东西. 这个apiServer的查询聚合和数据转换功能能不能具体一点讲一下?(apiserver后面的服务是不对外开放的吗?)
返回顶部
顶部