我有管理员前缀,我们有一个基于CMS的部分,网站所有者将能够维护应用内容。
有没有办法通过Auth组件自动限制这些部分。而其他部分不需要身份验证。
// other wise i will have to add a lot of actions like below
$this->Auth->allow('home', 'about', 'contacts);
答案 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;
}
编辑:糟糕 - 这只有在用户已经过身份验证(已登录)时才有用,抱歉。