0

我真的是 cakephp 的新手。我想知道如何限制用户打开诸如用户之类的页面,例如当用户更改 url 时。好吧,我不擅长讲述自己的问题,所以在这里:

例如:用户 ID 为 1,因此当他查看自己的详细信息时,它应该类似于 users/view/1,但我不希望该用户在将 url 更改为 users/view/2 时查看用户 #2。我希望你能理解。提前致谢!

4

2 回答 2

0

该解决方案可以通过谷歌找到:http: //www.dereuromark.de/2011/10/05/common-cakephp-problems-and-solutions/

基本上,您从会话中获取当前 id:

$uid = $this->Session->read('Auth.User.id');

并将其与您正在显示/编辑的记录进行比较。如果它们不匹配,则抛出 NotAllowedException()。

Protip:如果它是用户自己的个人资料或者只能由所有者查看,请不要附加用于编辑/查看等的 id。与获取上述 ID 进行验证的方式相同,您也可以使用此会话用户 ID 首先获取正确的记录。

此外,不要将 id 放入视图(表单)中——甚至不作为隐藏字段——而是在保存/验证之前将其注入数据数组中。

您还可以在此处查看当前的 CakePHP 2.4 实现- 也可以通过相应的网站实时查看/测试。

于 2013-10-19T12:31:31.583 回答
0

假设您在某处的会话中拥有当前的用户数据存储。这个想法是将其与 url 中传递的 id 进行比较

---- 在您的 UsersController.php 中

public function view($id){

    if($this->Session->read('User.id') != $id ){

      // cannot continue...
      // possibly redirect....
    }

}
于 2013-10-19T12:32:21.947 回答