当用户直接更改链接Cakephp时限制访问

时间:2013-10-19 07:09:42

标签: url cakephp restriction

我在cakephp中真的很新。我想知道如何限制用户打开诸如用户之类的页面,例如当用户更改网址时。好吧,我不擅长在这里说出自己的问题:

例如:用户ID是1所以当他查看自己的详细信息时应该是类似users / view / 1的东西,但我不希望该用户在将URL更改为users / view /时查看用户#2 2。我希望你不要。提前谢谢!

2 个答案:

答案 0 :(得分: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实现here - 也可以通过相应的网站进行实时查看/测试。

答案 1 :(得分:0)

假设您在某个会话中拥有当前登录的用户数据存储。 我的想法是将它与网址中传递的id进行比较

----在您的UsersController.php

public function view($id){

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

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

}