CakePHP:阻止用户访问其他用户的视图和方法

时间:2011-07-13 06:33:14

标签: cakephp-1.3

我让用户创建个人资料并使用36个字符个人资料ID。 users/profile.ctp文件最初是由Cake烘焙的users/view.ctp文件。

网址看起来像example/users/profile/3213123-12313-12313-4544534

我想阻止其他用户访问彼此的个人资料或编辑页面:例如成就/编辑

我使用ACL阻止了某些操作,但是用户位于具有相同访问权限的同一“组”中。

如何确保用户只能访问其个人资料/方法,并且通过网址访问其他人资料的用户会被重定向到主页。我应该通过高级ACL做到这一点,还是我在这里错过了一些简单的代码。

1 个答案:

答案 0 :(得分:1)

当您的用户连接时,他的信息将保持在会话中。因此,在您的UsersController中,您可以执行以下操作:

function profile($user_id){ // let's say that the 36chars is the user's id
    if($user_id !== $this->Auth->user('id')){
        $this->cakeError("error404"); // or redirect to a view saying that he doesn't have access
    }

    // ... do your stuff
}

也许你需要在不同控制器的不同方法中做同样的事情。您可以创建一个Component来执行此操作,或者在AppController中添加一个方法。

祝你好运!