cakePHP Auth - 允许/拒绝,授权所需的是什么?

时间:2011-09-11 23:24:29

标签: cakephp-1.3 authentication before-filter

检查一下:

function beforeFilter() {
    $this->Auth->authorize = 'controller';
    $this->Auth->allow('delete');
}

function isAuthorized() {
    if ($this->Auth->user('role') != 'admin') {
        $this->Auth->deny('delete');
    }

    ...
}

(来自:http://book.cakephp.org/view/1255/AuthComponent-Methods#deny-1258

这是isAuthorized的文档示例。如果我可以简单地在beforeFilter中设置条件,我还需要它?看起来像是无用的代码..

1 个答案:

答案 0 :(得分:3)

它允许您将授权逻辑与可能驻留在beforeFilter回调中的其他逻辑分开。此外,由于它是一种方法,您可以通过在AppModel中实现继承来利用继承,还可以覆盖或扩展单个控制器中的功能。您引用的代码示例并未真正反映该方法应该返回true / false的事实。一个更好的例子可能是通过在AppModel中添加类似这样的内容来授权访问站点范围内的管理路由页面:

public function isAuthorized() {
    if (isset($this->params['admin']) && $this->Auth->user('role') == 'admin') {
        return true;
    }
    return false;
}