比如说一个订单,只有 订单所有者 或者 具备相关管理角色 的人才能看。
这个订单所有者只能在业务代码里面查出来再进行鉴权吗?
1
meshell 2021-07-29 11:15:27 +08:00
你这个粒度有点小呀。能不能按订单分类,根据分类创建角色?
|
2
securityCoding 2021-07-29 11:21:24 +08:00
不用
有网关的话在网关层面做,没有网关就封装一个可配置的拦截器,不要在业务代码直接判断 |
3
zoharSoul 2021-07-29 12:00:03 +08:00
业务鉴权.
网关不管这种 |
4
BQsummer 2021-07-29 16:23:13 +08:00
网关不会管数据权限的。
我们公司自己造轮子,做了个权限系统(介于 rbac 和 abac,资源是树状布局),接口权限和前端组件权限都能通过注解进行拦截(拦截器能获取到当前登录人和注解传的 key,做权限查询);数据权限就只能写代码里了。 权限也不可能到订单这么细,还是要分类的。 |
5
myCupOfTea 2021-07-29 16:43:53 +08:00
@securityCoding 他这个也太细力度了,网关做也太不方便了
|
6
securityCoding 2021-07-29 16:52:46 +08:00
@myCupOfTea 具备相关管理角色的人才能看这种其实不算数据权限,完全可以在业务网关做。订单所有者这种算是数据权限必须在业务层做
|
7
libook 2021-07-29 16:52:58 +08:00
不了解具体什么需求,以前做类似的功能是在业务里判断,网关负责确定请求的人是谁,然后业务里用网关认证的身份信息来判断是否有权限。
如果业务里涉及鉴权规则的地方也比较多,可以在业务层塞入一个鉴权层,可以把权限简单划分为公开、已登录用户、自己等类别,然后业务返回这个属于哪种鉴权类别,鉴权层再直接套用通用逻辑鉴权。 |
8
securityCoding 2021-07-29 16:55:45 +08:00
@myCupOfTea 我个人的方案是在网关层会将登录态用户属性( id,商户 id,角色,部门等等)解析好放在上下文( http-header )让业务层直接获取,业务层基本上不用自己去查询
|
9
xuanbg 2021-07-29 16:55:56 +08:00
列表的话,查询的时候注入条件。详情的话,读出数据后代码里面判断。
|
10
uselessVisitor 2021-07-29 20:28:50 +08:00
这种你就要将角色对应的权限控制好,现有的框架可以做到按钮权限化
|
11
realpg 2021-07-30 10:41:37 +08:00 1
不是针对楼主提到的问题
针对 1 楼 5 楼说 这个还细? 难道你们做的系统 URL 里改一下订单号就能看别人订单? |
12
liuidetmks 2021-07-30 11:58:09 +08:00
@realpg 这样是很常见的 Bug,给人提了,别人觉得你装逼,狗拿耗子。又不是不能跑,是吧
|