簡體   English   中英

如何在CakePHP 3.2的ACL插件中使用多個用戶表?

[英]How to use multiple users table in ACL plugin for CakePHP 3.2?

我有三種不同類型的用戶,它們都存儲在不同的表中。 我想實現ACL,以允許/拒絕對它們的某些訪問。 cakephp acl插件的默認行為使用“用戶”表並在“組”中分配它們。 有什么辦法我可以自定義此方法以使用多個用戶表。

提前致謝。

免責聲明:我沒有測試我要寫的東西

我看到Acl具有可以配置的userModel參數(請參閱此處 )。

因此,在加載組件時,您必須根據實際用戶表進行設置

$this->loadComponent('Auth', [
    'authorize' => [
        'Acl.Actions' => [
            'actionPath' => 'controllers', 
            'userModel' => 'Users' // <== you can change this
                                   // i.e. to Guests, Admins...
        ],
    ],

當然,您必須將每個可以登錄的表都設置為請求者

 $this->addBehavior('Acl.Acl', ['type' => 'requester']);

我在這里看到的唯一問題是,您不知道擁有什么樣的用戶,直到他登錄為止。因此,只有在登錄后才能設置“ userModel”。 我不確定這可能在登錄階段引起一些問題。

無論如何,我仍然認為更簡單的方法是使用單個表和不同的角色。

貢獻可能會遲到,但可能會幫助其他人。 我解決了這個問題,組織了我的代碼以使用前綴路由,例如,您在admin create AppController內的控制器“ Admins”中創建了前綴路由,在其中加載了Auth組件,並為管理員(例如“ Users”)指定了userModel。 您可能還有另一條路由“ vendorsPortal”,在其中創建appController,將您的Auth Component set UserModel加載為Vendors模型。 希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM