CakePHP Auth仅适用于Admin Prefix

时间:2014-02-02 17:20:22

标签: cakephp authentication cakephp-2.4

我有管理员前缀,我们有一个基于CMS的部分,网站所有者将能够维护应用内容。

有没有办法通过Auth组件自动限制这些部分。而其他部分不需要身份验证。

// other wise i will have to add a lot of actions like below
$this->Auth->allow('home', 'about', 'contacts);

2 个答案:

答案 0 :(得分:6)

$this->Auth->allow();

时,只需prefix != 'admin'

答案 1 :(得分:0)

您只需使用基于控制器的授权即可完成此任务: http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#using-controllerauthorize

我们的想法是,您的控制器(以及您需要特定规则的控制器)中的isAuthorized()方法将根据用户的授权返回true或false。

所以你可以通过在你的AppController中输入这样的东西来禁用所有管理路径(经过身份验证的人除外):

public function isAuthorized($user) {
    // * Admin section control
    if (empty($this->params['admin'])) {
        // ** DEFAULT: All users can access public functions
        return true;
    } else if(AuthComponent::user('role') == 'admin'){
        // ** Allow admin users access to everything.
        return true;
    }
    // * DEFAULT: Deny all
    return false;
}

编辑:糟糕 - 这只有在用户已经过身份验证(已登录)时才有用,抱歉。