【问题标题】:Limiting access to different user profile views限制对不同用户个人资料视图的访问
【发布时间】:2013-04-30 12:24:04
【问题描述】:

对于社交网络风格的应用程序,对用户个人资料的访问权限不同,例如,完整个人资料(所有者)、有限个人资料(个人资料所有者朋友)、无访问权限(随机用户)。

如何使用 Yii 框架限制对不同配置文件视图(本例中为三个)的访问?

我自己寻找过这个,但可用的选项数量令人困惑,其中一些我不能 100% 确定是否符合上述行为。我怀疑这是一个菜鸟问题,所以如果这在其他地方得到了很好的介绍,请随时重定向我。

【问题讨论】:

    标签: php web-applications yii social-networking access-control


    【解决方案1】:

    您必须使用他们的 id 访问用户的个人资料,以便您可以检查个人资料是否属于当前登录用户的个人资料,然后在 UsersController actionView 中您可以这样做

    if(Yii::app()->user->isGuest){
       Yii::app()->user->loginRequired();
    }
    if(Yii::app()->user->id == $user_id){
        //this is something to check before showing information about the current user. 
        //you can use this variable for some specific html blocks (to show them or not).
        $user_role = '1'; //full access
    }
    else {
        $user_role = '0'; //partial access
    }
    

    虽然这只是一个简单的技巧。可以有更复杂的方法来做到这一点。

    【讨论】:

    • 这对我来说似乎很好,非常简单。我一直在阅读有关 RBAC 和可选 Yii 模块(例如“用户”和“权限”)的信息,您知道其中任何一个是否涵盖了我概述的用例吗?如果还有其他选择,您能否就最佳选择发表意见?我想将此包含在我的问题范围内,但该网站警告我不要主观。如果有问题,我仍然会根据我写上述问题的方式接受答案。
    • 重定向到登录 URL 的正确方法是调用Yii::app()->user->loginRequired()。它会自动为您返回当前页面。
    • Goose:好吧,IMO 用户的角色将适用于管理员和普通用户(整个网络应用程序的权限差异很大),或者在某些特殊情况下,他们也可能是其他用户(例如作者、读者等)但我认为这不适用于您的场景,因为不需要角色只是为了在视图页面上显示特定数据。为了保持抽象,您可以创建两个视图页面(myProfile 和 profile)。否则我建议的方式也应该完成这项工作。 @MichaelHärtl:是的,应该是这样。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    相关资源
    最近更新 更多