我正在尝试使用 isAuthorized() 方法来检查管理标志,但该函数似乎从未被调用过。即使我将函数设置为始终返回 false,它也允许任何用户。它似乎没有被调用。
我需要做的不仅仅是设置 $this->Auth->authorize = 'controller' 吗?
来自/app/app_controller.php
class AppController extends Controller
{
var $components = array('Auth');
function beforeFilter()
{
$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
$this->Auth->loginRedirect = array('controller' => 'pages', 'display' => 'home');
$this->Auth->logoutRedirect = '/';
$this->Auth->authorize = 'controller';
$this->Auth->userScope = array('User.active' => 1);
}
function isAuthorized()
{
if (strpos($this->action, "admin_") != false)
{
if ($this->Auth->user('isAdmin') == '0')
{
return false;
}
}
return true;
}
}
最佳答案
您应该检查是否覆盖了其他 Controller 中的 Auth 设置。
首先,要验证 isAuthorized()
是否被调用,请尝试放置一个简单的 debug($this);死;
在里面。
如果它没有死,您可能正在其他 Controller 中覆盖它(您缺少 parent::isAuthorized()
调用)。
如果不是那样,那么您可能正在使用 beforeFilter()
做同样的事情。
关于php - cakephp isAuthorized() 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/768785/