CakePHP 3:管理员前缀的特定授权
CakePHP 3 : specific authorization for admin prefix
我正在尝试对小 news/blog 设置一些限制。
我制作了以下 admin
前缀路由:
Router::prefix('admin', function ($routes) {
$routes->connect('/', ['controller' => 'Articles', 'action' => 'index']);
$routes->connect('/:controller/:action/*', ['controller' => 'controller', 'action' => 'action']);
});
我的问题是 beforeFilter
中的这条规则 $this->Auth->allow(['index', 'view', 'display']);
每个人都可以访问 /admin/Articles/index
或 /admin/Users/index
操作
如果我像下面那样使用 isAuthorized
函数,它可以解决经过身份验证的用户的问题,但不能解决匿名用户的问题:
public function isAuthorized($user = null)
{
// Any registered user can access public functions
if (empty($this->request->params['prefix'])) {
return true;
}
// Only admins can access admin functions
if ($this->request->params['prefix'] === 'admin') {
return (bool)($user['role'] === 'admin');
}
// Default deny
return false;
}
有什么方法可以限制 admin
前缀的所有操作只能由经过身份验证的用户访问吗?
在您的 beforeFilter
回调中添加条件:
public function beforeFilter(/* ... */) {
if (empty($this->request->params['prefix'])
|| $this->request->params['prefix'] !== 'admin') {
$this->Auth->allow(['index', 'view', 'display']) ;
}
}
我正在尝试对小 news/blog 设置一些限制。
我制作了以下 admin
前缀路由:
Router::prefix('admin', function ($routes) {
$routes->connect('/', ['controller' => 'Articles', 'action' => 'index']);
$routes->connect('/:controller/:action/*', ['controller' => 'controller', 'action' => 'action']);
});
我的问题是 beforeFilter
中的这条规则 $this->Auth->allow(['index', 'view', 'display']);
每个人都可以访问 /admin/Articles/index
或 /admin/Users/index
操作
如果我像下面那样使用 isAuthorized
函数,它可以解决经过身份验证的用户的问题,但不能解决匿名用户的问题:
public function isAuthorized($user = null)
{
// Any registered user can access public functions
if (empty($this->request->params['prefix'])) {
return true;
}
// Only admins can access admin functions
if ($this->request->params['prefix'] === 'admin') {
return (bool)($user['role'] === 'admin');
}
// Default deny
return false;
}
有什么方法可以限制 admin
前缀的所有操作只能由经过身份验证的用户访问吗?
在您的 beforeFilter
回调中添加条件:
public function beforeFilter(/* ... */) {
if (empty($this->request->params['prefix'])
|| $this->request->params['prefix'] !== 'admin') {
$this->Auth->allow(['index', 'view', 'display']) ;
}
}