我在cakephp中真的很新。我想知道如何限制用户打开诸如用户之类的页面,例如当用户更改网址时。好吧,我不擅长在这里说出自己的问题:
例如:用户ID是1所以当他查看自己的详细信息时应该是类似users / view / 1的东西,但我不希望该用户在将URL更改为users / view /时查看用户#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....
}
}