【问题标题】:cakephp isAuthorized() not being calledcakephp isAuthorized() 没有被调用
【发布时间】:2009-04-20 15:30:39
【问题描述】:

我正在尝试使用 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;
}
}

【问题讨论】:

    标签: php authentication cakephp


    【解决方案1】:

    您应该检查是否覆盖了其他控制器中的身份验证设置。

    首先,要验证isAuthorized() 是否被调用,请尝试在其中放入一个简单的debug($this); die;

    如果它没有死,你可能在其他控制器中覆盖它(你错过了parent::isAuthorized() 调用)。

    如果不是这样,那么您可能正在使用 beforeFilter() 做同样的事情。

    【讨论】:

    • 原来我覆盖了 beforeFilter() 而没有调用 parent::beforeFilter()
    【解决方案2】:

    除了 Hannibal Lecter 博士的回答之外,如果您遇到这个问题,还有另一个可能的原因(就像我一样......):

    如果您的控制器名为 tests_controller,则 Auth-Component 的 startUp 方法会在不启动身份验证的情况下中止(至少在 cakePHP 1.3.10 中 - 尚未检查 2.x)。所以请确保您永远不要将控制器命名为 tests_controller...

    摘自 cake\libs\controller\components\auth.php

    function startup(&$controller) {
        $isErrorOrTests = (
            strtolower($controller->name) == 'cakeerror' ||
            (strtolower($controller->name) == 'tests' && Configure::read() > 0)
        );
        if ($isErrorOrTests) {
            return true;
        }
    ...
    

    【讨论】:

      【解决方案3】:

      您需要确保“Auth”在该控制器的组件数组中:

      $this->components[] = 'Auth';
      

      将它放到构造函数中,它应该可以工作(当然,除非它不工作)。祝你好运!

      【讨论】:

      • 我在原帖中省略了它,但在我的编辑中添加了它,它一直存在。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多