请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

优惠券方法权限、token验证方面的设计比较

方法权限:
优惠券:收集信息发往权限中心,网关远程调用权限中心验证方法
我现在的项目:方法权限注解标注在方法上,由拦截器拦截请求,读取注解参数,去redis查询是否该角色有相应访问权,并将拦截器做成jar提供给其他项目使用而不是在网关做

token:
优惠券:极简化版,直接在网关获取,略
我现在的项目:由权限中心提供jar,具体方法逻辑是在网关处查redis中缓存的token,查不到再远程调用权限中心。

我想知道:
1、像token、方法权限的验证企业级是怎么做,网关直接调用权限中心,具体逻辑在权限中心处理,还是权限中心以工具包的形式把校验逻辑交给网关可省一次http调用(上次被技术经理怼,每个请求都得多一次http调用增加负担)
2、假如采用优惠券的形式涉及到内部微服务的调用如何做方法权限的校验,例如有网关和A、B模块,调用链路是网关->A->B,能否在网关处如何检验B被调用的方法的权限

正在回答

1回答

电耗子同学你好:

    你这里所说的“权限中心”,我理解应该是一个独立的微服务。这种设计虽然上逻辑上走得通,但是,实在是没有必要的,至少我还没有见过这样的工程设计。原因很简单,这个功能太单一,而且功能太过于简单,一个独立的微服务有点“言过其实”。

    提供 jar 包的方式或者是直接把权限校验相关的代码写在网关里面是合适的做法,我见过的与我设计的企业级工程开发里面也都是这样做的,原因也是很好理解的:

    (1)职责独立,网关是工程的唯一入口,把请求拦截在这里当然是最合适的

    (2)权限校验的功能比较简单,写在网关里面不会增加网关的复杂度,是可行的方案

    所以,我个人的建议是在网关里面直接做,或者就是你说的提供 jar 包的方式(不过,以我的经验来判断,权限校验功能单独提供 jar 包的必要性也是不大的)。


    我是勤一,致力于将这门课程的问答区打造为 Java 知识体系知识库,Java 知识体系 BBS!共同建造、维护这门课程,我需要每一个你!

1 回复 有任何疑惑可以回复我~
  • 提问者 qq_电耗子_0 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-10-12 21:09:13
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信