素材牛VIP会员
判断用户是否有权限访问
 ti***nx  分类:SQL代码  人气:1064  回帖:8  发布于6年前 收藏

有个问题:一般通过url参数 查询数据的时候,是通过id 来查询数据
比如要查询一个订单详情,那么这个id 就是订单详情表的id

"http://localhost/index/order/detail/id/3.html"

那么我是不是可以改变这个id 就能查询到别人的订单详情了呢?
我做订单详情的时候是不是还要判断是否这个客户的订单?每次都判断会不会很麻烦?
还是使用订单号查询?

讨论这个帖子(8)垃圾回帖将一律封号处理……

Lv1 新人
记***香 站长 6年前#1

查看订单详情至少需要两个参数,订单id及当前用户id。后端首先应该先判断是否正确接收到这两个参数,然后根据订单id查找到相应的订单信息,再将当前用户id与订单信息中的下单用户id匹配,不一致则提示无权访问。

Lv5 码农
yi***ou CEO 6年前#2

1.不能同id作为订单查询的依据,比如用uuid
2.订单的表的里面有当前订单数据哪个客户的字段,查询的时候带上这个条件

Lv4 码徒
麦***6 站长 6年前#3

查询订单的时候应该是:

select * from 订单表 where id="id" and uid="uid"; 
Lv5 码农
us***es 职业无 6年前#4

用户UID与订单ID 为 && 关系。

Lv3 码奴
贝***0 页面重构设计 6年前#5

真实的订单是有混淆性的,请求时并不是真的就是数据表的主键字段,所以你这个要自己改改

Lv5 码农
li***56 移动开发工程师 6年前#6

1.首先判断该用户是否处于登录状态,获取session来判断;
2.根据用户id来判断是否有权限访问该订单详情。

Lv1 新人
wx***73 移动开发工程师 6年前#7

当有个id被传到后台后 数据库查询的时候并不是只查询id=id这一个条件
会带上很多条件的,比如用户登录的uid , 或者session中存的用户账号什么的

当然你最好做一些sql防注入的东西,人家如果用id=1";这样的形式访问,你的sql就很危险。

Lv4 码徒
谢***1 CEO 6年前#8

权限的问题应该是后端判断吧,按照道理应该是前端传给服务器一个订单id(你这里是url传参),然后后端会去查表,然后返回数据给前端。对于权限这个问题,后端可以在收到前端的接口调用信息之后,先判断用户是否有调用这个接口的权限,如果有(且逻辑数据合理等),返回数据,如果没有,就直接返回没有权限访问,这样去控制。

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取