【问题标题】:CakePHP: Prevent users from accessing other user's view and methodsCakePHP:防止用户访问其他用户的视图和方法
【发布时间】:2011-07-13 06:33:13
【问题描述】:

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

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

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

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

如何确保用户只能访问他的个人资料/方法,并且通过 url 访问其他人个人资料的用户被重定向到主页。我应该通过高级 ACL 执行此操作,还是在这里遗漏一些简单的代码。

【问题讨论】:

    标签: cakephp-1.3


    【解决方案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
    }
    

    也许您需要在不同控制器的不同方法中执行相同的操作。您可以创建一个组件来执行此操作,或者在 AppController 中添加一个方法。

    祝你好运!

    【讨论】:

    • 谢谢,有道理。我还没试过。稍后会发布我走了多远。
    • 我现在正在为它创建一个组件,因为我在许多其他地方确实需要它
    猜你喜欢
    • 2013-12-04
    • 2015-10-23
    • 2020-05-21
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多