php - cakephp isAuthorized() 未被调用

标签 php authentication cakephp

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

相关文章:

node.js - 使用 express-session 和 connect-session-sequelize 时 this.sessionModel.find 不是函数

security - Windows 用户配置文件似乎阻止了 Web 服务调用上的证书身份验证

JAVA - 从网络服务器下载二进制文件(例如 PDF)文件

php - Cakephp 登录页面要求表用户,但我只有一个用户表

mysql - hasMany加入cakephp错误

validation - CakePHP - 在哪里放置可重用的自定义验证规则?

php - 在 PHP 中填充表格

php - MySQL 根据表列中的值返回不同的字符串

php - 表现不佳

php - SearchPhaseExecutionException [无法执行阶段[查询]