【问题标题】:CakeDc/users how to work with permissions?CakeDc/users 如何使用权限?
【发布时间】:2017-11-08 15:25:16
【问题描述】:

我安装了CakeDC/users 运行迁移,创建超级用户,将 users.php 复制到 config/ 目录。

现在在我的网站中,所有页面都重定向到登录页面。而且我无法更改这件事,因为我不太了解权限的工作原理。

我的需要是允许站点上的所有页面,并仅阻止一个页面的访问以及登录用户的个人数据。

任何帮助,建议阅读,欢迎示例,非常感谢!

【问题讨论】:

    标签: cakephp cakephp-3.0 cakedc


    【解决方案1】:

    您需要允许您的AppControllerbeforeFilter 中的所有操作。

    public function beforeFilter(Event $event)
    {
        $this->Auth->allow();
    }
    

    AuthComponent::allow

    然后,您需要在具有该操作的控制器的beforeFilter 中拒绝需要身份验证的操作。

    public function beforeFilter(Event $event)
    {
        // Where `loggedInAction` is the name of the
        // action that requires authentication 
        $this->Auth->deny('loggedInAction');
    }
    

    AuthComponent::deny

    【讨论】:

    • 谢谢,是的,这会起作用,但我不明白permissions.php 配置文件的用途,我可以从中配置我的所有权限吗?
    • 是的,正是这个想法。如果您使用此处描述的 Rbac 身份验证 github.com/CakeDC/auth/blob/master/Docs/Documentation/… 您可以在此文件中指定所有应用程序权限
    • @steinkel 谢谢,但我不能让它工作,我写的规则不起作用,有一张表可以解释事情吗?未登录的用户是“客人”?如果我想全部允许并且只阻止 PagesController 上的一项操作,我该怎么办?
    • 你在谈论不同的事情。如果您想允许用户进行所有操作,以便他们无需登录即可访问您的应用程序,并且只保护页面控制器,那么将组件加载到 PagesController 而不是 AppController 中。并使用 $this->Auth->allow([..action names.]); 指定 PagesController 中允许的其余操作
    • 如果您只打算将身份验证用于一项操作,那么@steinkel 所说的最有意义。
    【解决方案2】:

    也许你必须在你的控制器中为 cakephp3.x 使用这个方法:

     public function initialize()
     {
        $this->Auth->allow('youraction'); // this action will plublic. Not under auth control.
     }
    

    希望此链接可以帮助您: https://book.cakephp.org/3.0/en/controllers.html#the-app-controller

    【讨论】:

      猜你喜欢
      • 2017-09-26
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      • 2014-06-09
      • 1970-01-01
      • 2015-03-12
      • 2021-01-25
      相关资源
      最近更新 更多