我真的是 cakephp 的新手。我想知道如何限制用户打开诸如用户之类的页面,例如当用户更改 url 时。好吧,我不擅长讲述自己的问题,所以在这里:
例如:用户 ID 为 1,因此当他查看自己的详细信息时,它应该类似于 users/view/1,但我不希望该用户在将 url 更改为 users/view/2 时查看用户 #2。我希望你能理解。提前致谢!
我真的是 cakephp 的新手。我想知道如何限制用户打开诸如用户之类的页面,例如当用户更改 url 时。好吧,我不擅长讲述自己的问题,所以在这里:
例如:用户 ID 为 1,因此当他查看自己的详细信息时,它应该类似于 users/view/1,但我不希望该用户在将 url 更改为 users/view/2 时查看用户 #2。我希望你能理解。提前致谢!
该解决方案可以通过谷歌找到: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 实现- 也可以通过相应的网站实时查看/测试。
假设您在某处的会话中拥有当前的用户数据存储。这个想法是将其与 url 中传递的 id 进行比较
---- 在您的 UsersController.php 中
public function view($id){
if($this->Session->read('User.id') != $id ){
// cannot continue...
// possibly redirect....
}
}