权限管理这块怎么限制传参?
source link: https://www.v2ex.com/t/980835
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
比如两个角色,一个管理员,一个用户。 他们都有/userinfo?id=xxx 这个接口的权限, 管理员可以查询任何人,所以对 xxx 没有限制,用户只能查询他的同级,xxx 的范围是他的同级,如何防止用户知道管理员 id 后查管理员的信息?
PerFectTime 6 小时 59 分钟前 换个思路,不应该限制传参,应该限制返回参数。知道参数又如何,接口不给你返回你想要的数据
|
justthewayyouare 6 小时 57 分钟前 via iPhone @PerFectTime 这样的话要加一堆判断逻辑啊,我是想用 casbin 来控制,但是 casbin 只能控制接口
|
xomix 6 小时 56 分钟前 实现方法很多,最简单的就是你听过 API Gateway 吗?他就可以用来做这个。
|
jaredyam 6 小时 56 分钟前 if (id not in xxx) { return EMPTY; }?
|
bhbhxy 6 小时 54 分钟前 header 中携带 token 信息,后台接收到 token 后判断角色,管理员角色返回所有数据,用户返回限制后的数据,如果用户查询的 id 不是其同级,返回无权限或者找不到数据的提示
|
HKNeetsDieSoon 6 小时 45 分钟前 加个方法判断 xxx 是否在请求方的数据范围内,通过级别判断什么都行啊
|
yolee599 6 小时 43 分钟前 via Android if (user.level < USER_LEVEL_ADMIN) return NULL;
else return id.info; |
xiaoHuaJia 6 小时 38 分钟前 用户信息放到 token 中在网关解析之后放入头信息中,在使用的时候拿就好了。userId 这种参数根本不需要通过接口传参,token 也是放入全局头信息中,对于用户来说就是无感知的
|
linyinma 6 小时 35 分钟前 8 把功能权限 和 数据权限混为一谈
|
justthewayyouare 6 小时 32 分钟前 via iPhone @xiaoHuaJia 自己的 usrid 肯定是 token 拿了,我说的是别人的 id
|
lzxz1234 6 小时 31 分钟前 查询判断:
if(!loginUser.hasUserAuth(targetUserId)) { return "user not exists"; } 或者在请求用户列表的时候把返回的 id 用 session 作 key 加密一下,查询的时候再解,这样就没法猜用户 ID 了 |
NutChocHoney 6 小时 27 分钟前 数据权限是根据业务来的,不加逻辑判断不行吧,没用过 casbin,但 rbac 的话都差不多吧
|
lldld 6 小时 21 分钟前 粗暴一点的办法就是把 "用户只能查询他的同级" 这个规则自动放到查询条件里面去.
比如 select * from user where user_id = xxx and user_level <= CALLER_USER_LEVEL; |
nothingistrue 6 小时 17 分钟前 一般的权限管理组件只管到 URL 资源这一级别,不会往下再管,而你这个是业务逻辑权限,需要下层代码手动处理,或者更高级/复杂的权限管理组件。
|
bitmin 5 小时 31 分钟前 最简单的办法就是拆成两个接口了吧
一个接口查同级 一个接口查所有人 |
xuanbg 4 小时 38 分钟前 数据权限可以抽象,但必须要约定数据筛选字段,缺点是无法支持分页。要支持分页,就必须在查询 sql 中注入额外的查询条件,这个实现起来相当复杂,我一般都是直接拼条件了。
@NutChocHoney |
SkyLine7 4 小时 6 分钟前 这不是按钮权限,这是数据权限
|
eastjoehan 3 小时 13 分钟前 设置角色的权限范围,然后按照权限范围动态注入 SQL 条件,这是最简单的做法
|
jokechen 3 小时 12 分钟前 via iPhone @justthewayyouare 判断 token 的 userId 是否与传参的 userId 一致。
|
jiangzm 3 小时 4 分钟前 数据权限接口分开, 而不是在接口里面判断
|
cslive 19 分钟前 从 session 或者 token 获取用户信息,前端默认不可信
|
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK