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

2021-07-29 10:50:21 +08:00
 wktrf

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

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

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

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

这个还细?
难道你们做的系统 URL 里改一下订单号就能看别人订单?
liuidetmks
2021-07-30 11:58:09 +08:00
@realpg 这样是很常见的 Bug,给人提了,别人觉得你装逼,狗拿耗子。又不是不能跑,是吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/792426

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX