后端数据权限问题,怎么判断当前用户可以操作这个数据?

有技术大佬吗,救救孩子吧!

数据库是这样的

[

{

"id": "100",

"name": "data1",

"createUserId": 1

},

{

"id": "101",

"name": "data2",

"createUserId": 2

},

{

"id": "102",

"name": "data3",

"createUserId": 3

},

{

"id": "103",

"name": "data4",

"createUserId": 4

},

{

"id": "104",

"name": "data5",

"createUserId": 4

}

]

如果查询的话就比较简单,每个请求接口的 header 都能够拿到 userId,可以通过 jwt 解密出来
例如是 userId=4,那么查询的时候加上这个判断就可以了,用户 4 只能拿到属于自己的两个数据,id 分别是 103 和 104

但是在修改的时候怎么鉴权,因为要判断这个用户是有权限操作这个数据的,前端给的参数是这样的

{

"id": "103",

"name": "data4-修改的数据",

"createUserId": 4

}

后端为了安全起见,不可能直接就修改了,也不可能拿着 header 的 userId 和 createUserId 字段来对比
因为两个都是前端传过来的,肯定不安全,现在的做法就是拿着 id=103 这个值去调用 get 方法,拿到数据后再用 userId 和 createUserId 来对比

同样删除方法也是这样子做,先查询再判断权限,再后续操作
但是这个感觉很是麻烦,前端那边唯一能够信得过的就是给过来的这个 id,和 header 里面的 userId,其他数据基本上都是信不过的

感觉没有表达明白,意思是现在前端要删除一个数据,但是前端只给了我数据的id和token里面的userId,然后我不能就根据这个id去删除这个数据,还要在get(id)之后根据里面的createUserId和token里面的userId对比,如果相等,说明这个数据是当前用户的,可以被删除,否则就认为是错误的,现在的问题就是每个del和update方法里面都要先执行一次这个get(id)的方法,感觉有点奇怪,想知道有没有什么更好的方法处理这个问题


回答:

看你这权限设计有点没懂,有登录体系吗,返回的token和用户信息里会携带权限信息呀,你后端在登录接口中用ThreadLocal存一份就行了,每次去操作时拿当前的用户权限去操作。


回答:

鉴权:cookie、session、token

以上是 后端数据权限问题,怎么判断当前用户可以操作这个数据? 的全部内容, 来源链接: utcz.com/p/944987.html

回到顶部