V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
wktrf
V2EX  ›  程序员

大佬们,鉴权所需的业务属性应该如何提供啊?

  •  
  •   wktrf · 2021-07-29 10:50:21 +08:00 · 2043 次点击
    这是一个创建于 1242 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如说一个订单,只有 订单所有者 或者 具备相关管理角色 的人才能看。

    这个订单所有者只能在业务代码里面查出来再进行鉴权吗?

    12 条回复    2021-07-30 11:58:09 +08:00
    meshell
        1
    meshell  
       2021-07-29 11:15:27 +08:00
    你这个粒度有点小呀。能不能按订单分类,根据分类创建角色?
    securityCoding
        2
    securityCoding  
       2021-07-29 11:21:24 +08:00
    不用
    有网关的话在网关层面做,没有网关就封装一个可配置的拦截器,不要在业务代码直接判断
    zoharSoul
        3
    zoharSoul  
       2021-07-29 12:00:03 +08:00
    业务鉴权.
    网关不管这种
    BQsummer
        4
    BQsummer  
       2021-07-29 16:23:13 +08:00
    网关不会管数据权限的。
    我们公司自己造轮子,做了个权限系统(介于 rbac 和 abac,资源是树状布局),接口权限和前端组件权限都能通过注解进行拦截(拦截器能获取到当前登录人和注解传的 key,做权限查询);数据权限就只能写代码里了。
    权限也不可能到订单这么细,还是要分类的。
    myCupOfTea
        5
    myCupOfTea  
       2021-07-29 16:43:53 +08:00
    @securityCoding 他这个也太细力度了,网关做也太不方便了
    securityCoding
        6
    securityCoding  
       2021-07-29 16:52:46 +08:00
    @myCupOfTea 具备相关管理角色的人才能看这种其实不算数据权限,完全可以在业务网关做。订单所有者这种算是数据权限必须在业务层做
    libook
        7
    libook  
       2021-07-29 16:52:58 +08:00
    不了解具体什么需求,以前做类似的功能是在业务里判断,网关负责确定请求的人是谁,然后业务里用网关认证的身份信息来判断是否有权限。

    如果业务里涉及鉴权规则的地方也比较多,可以在业务层塞入一个鉴权层,可以把权限简单划分为公开、已登录用户、自己等类别,然后业务返回这个属于哪种鉴权类别,鉴权层再直接套用通用逻辑鉴权。
    securityCoding
        8
    securityCoding  
       2021-07-29 16:55:45 +08:00
    @myCupOfTea 我个人的方案是在网关层会将登录态用户属性( id,商户 id,角色,部门等等)解析好放在上下文( http-header )让业务层直接获取,业务层基本上不用自己去查询
    xuanbg
        9
    xuanbg  
       2021-07-29 16:55:56 +08:00
    列表的话,查询的时候注入条件。详情的话,读出数据后代码里面判断。
    uselessVisitor
        10
    uselessVisitor  
       2021-07-29 20:28:50 +08:00
    这种你就要将角色对应的权限控制好,现有的框架可以做到按钮权限化
    realpg
        11
    realpg  
       2021-07-30 10:41:37 +08:00   ❤️ 1
    不是针对楼主提到的问题
    针对 1 楼 5 楼说

    这个还细?
    难道你们做的系统 URL 里改一下订单号就能看别人订单?
    liuidetmks
        12
    liuidetmks  
       2021-07-30 11:58:09 +08:00
    @realpg 这样是很常见的 Bug,给人提了,别人觉得你装逼,狗拿耗子。又不是不能跑,是吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1621 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:28 · PVG 00:28 · LAX 08:28 · JFK 11:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.