【发布时间】:2013-02-24 11:01:25
【问题描述】:
我正在尝试编写一些简单的功能来区分我正在编写的 CakePHP 应用程序中的管理员和普通用户。我已将users 表更改为有一个名为admin 的字段,该字段为0 或1。
在AppController.php 中,我有一个$components 数组,如下所示:
public $components = array(
'Session',
'Auth' => array(
'authenticate' => array(
'Blowfish' => array(
'fields' => array('username' => 'email')
)
),
'loginRedirect' => array('controller' => 'pages', 'action' => 'home'),
'logoutRedirect' => array('controller' => 'pages', 'action' => 'home'),
'authorize' => array('Controller')
)
);
还有这个方法:
public function isAuthorized($user) {
// Check if admin
if(isset($this->params['admin']) && $this->Auth->user('admin') == 1) {
echo "admin";
return true;
}
// Default deny
return false;
}
加载页面时出现此错误:(net::ERR_TOO_MANY_REDIRECTS): There were too many redirects.。由于某种原因,上面的代码导致了无限重定向,我不知道为什么。
另外,我为admin 设置了一个路由前缀,这样管理员就可以访问像/admin/users/edit 这样的URL。当我转到该页面时,我没有得到无限重定向,admin 是 echo 应该是这样。
我已经阅读了在线教程并阅读了 Cake 文档,但它们似乎都以无限重定向结束,我该如何设置它以便区分管理员和普通用户,并拒绝/允许访问某些每个角色的操作?
【问题讨论】:
-
你在使用 $this->Auth->allow();正确吗?要回答这个问题,请在您的 beforefilters 和路由规则中提供更多代码
标签: php cakephp authentication roles