判断用户是否有权限访问

懂王
  • 665

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

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

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

回复
阅读 5.1k
8 个回答
dashixionglihai
  • 436
✓ 已被采纳

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

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

xiaoxiaosu
  • 72

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

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

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

查询订单的时候应该是:

select * from 订单表 where id="id" and uid="uid"; 

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

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

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

宣传栏