2017-03-01 79 views
1

我一直在使用CakePHP的以下插件(https://github.com/CakeDC/users),但我無法弄清楚如何獲取權限爲它工作。我已遵循所有說明,但似乎authorize根本沒有得到應用。想知道如果有人有任何提示如何使其工作。這裏是我的設置:CakePHP - CakeDC插件權限不工作

bootstrap.php中

Configure::write('Users.config', ['users']); 
Plugin::load('CakeDC/Users', ['routes' => true, 'bootstrap' => true]); 

AppController.phpinitialize功能

$this->loadComponent('CakeDC/Users.UsersAuth'); 

配置/ users.php

$config = [ 
    'Auth' => [ 
     'authError' => 'Did you really think you are allowed to see that?' 
    ] 
]; 

return $config; 

配置/ permissions.php

return [ 
    'Users.SimpleRbac.permissions' => [ 
     [ 
      'role' => '*', 
      'controller' => 'Pages', 
      'action' => ['display'], 
      'allowed' => true 
     ], [ 
      'role' => '*', 
      'controller' => 'Taxes', 
      'action' => ['*'], 
      'allowed' => true 
     ], [ 
      'role' => '*', 
      'prefix' => 'v1', 
      'controller' => '*', 
      'action' => '*', 
      'allowed' => true 
     ] 
    ] 
]; 

return $config; 

坦率地說這似乎是一個CakePHP的配置問題,但我無法找到此問題的根源。我這樣說,因爲即使調試顯示正確的文件加載到authorize,它不會被調用。

回答

1

請確保您在users.php文件返回$config變量,而您是否正確初始化插件作爲在此間表示https://github.com/CakeDC/users/blob/master/Docs/Documentation/Configuration.md

Configure::write('Users.config', ['users']); 
Plugin::load('CakeDC/Users', ['routes' => true, 'bootstrap' => true]); 

我創建了一個測試環境,在這裏與您提供的驗證配置和它的工作原理正確https://ide.c9.io/steinkel/users-so-42523209

https://nimbus.everhelper.me/client/notes/share/790695/girguwv9x7rttdvu5c4x

謝謝,

+0

謝謝您的詳細解答。我會審查你在這裏做了什麼。我未能在我的問題上添加所有代碼,並且已更新它以反映我的問題。 –

+0

我已經檢查過你的C9設置,它看起來與我的類似。在您的'permissions.php'文件中,您允許''role'=>'user','訪問主頁。根據您的屏幕截圖,它會阻止訪問未經身份驗證的用戶。即使我有'role'=>'*',',我在我的應用程序中看到了相同的結果。你能否將你的應用程序的權限更改爲''role'=>'*',並且讓我知道你是否能夠查看主頁,或者如果它繼續將你發送到登錄頁面。謝謝! –

+0

我錯誤地認爲SimpleRbacAuthorize.php總體上允許我在沒有用戶登錄的情況下不使用$ this-> Auth-> allow(['action'])。事實並非如此。再次感謝! –