CakePHP 3-登录错误-调用布尔值上的成员函数标识
您好,我正在使用CakePHP3来简单地设置一个站点,其中一些页面需要用户首先登录 当我将CakePHP 3-登录错误-调用布尔值上的成员函数标识,cakephp,login,cakephp-3.0,identify,Cakephp,Login,Cakephp 3.0,Identify,您好,我正在使用CakePHP3来简单地设置一个站点,其中一些页面需要用户首先登录 当我将loadComponent('Auth',blablabla)代码放入AppController.php的initialize()中时,一切正常 src\Controller\AdminController.php ... public function login() { if ($this->request->is('post')) { $admin = $this-
loadComponent('Auth',blablabla)
代码放入AppController.php的initialize()
中时,一切正常
src\Controller\AdminController.php
...
public function login() {
if ($this->request->is('post')) {
$admin = $this->Auth->identify();
if ($admin) {
$this->Auth->setUser($admin);
return $this->redirect($this->Auth->redirectUrl());
}
$this->Flash->error('Your username or password is incorrect.');
}
}
...
...
public function initialize() {
parent::initialize();
$this->loadComponent('RequestHandler');
$this->loadComponent('Flash');
$this->loadComponent('Auth', [
'Authenticate' => [
'Form' => [
'userModel' => 'Admin',
'Fields' => [
'username' => 'email',
'password' => 'password'
]
]
],
'loginAction' => [
'controller' => 'Admin',
'action' => 'login',
]
]);
$this->Auth->allow(['display']);
}
...
src\Controller\AppController.php
...
public function login() {
if ($this->request->is('post')) {
$admin = $this->Auth->identify();
if ($admin) {
$this->Auth->setUser($admin);
return $this->redirect($this->Auth->redirectUrl());
}
$this->Flash->error('Your username or password is incorrect.');
}
}
...
...
public function initialize() {
parent::initialize();
$this->loadComponent('RequestHandler');
$this->loadComponent('Flash');
$this->loadComponent('Auth', [
'Authenticate' => [
'Form' => [
'userModel' => 'Admin',
'Fields' => [
'username' => 'email',
'password' => 'password'
]
]
],
'loginAction' => [
'controller' => 'Admin',
'action' => 'login',
]
]);
$this->Auth->allow(['display']);
}
...
此时,我需要登录才能查看站点的所有其他页面。
但我试图将相同的身份验证设置放在另一个名为JustController
的控制器中,在我登录后,出现了一个错误
对布尔函数的成员函数identify()的调用
已经放映了
应该可以在其他控制器中设置身份验证,这样站点就可以有多套登录系统,而不是通过在AppController
中设置来覆盖整个站点,不是吗
谢谢。您在AdminController中调用了AppController的初始化吗?@cjquinn谢谢您的回复。您的意思是在AdminController的initialize()
中吗?在我打电话给它之后,它不会引起任何不同。但是AppController
的initialize()
不是被称为AdminController
扩展了它吗?有朋友回复很酷,我可以知道你对在CakePHP站点中构建两个登录方案的看法吗?e、 g.论坛用户和面板管理员。你使用前缀吗?是的,如果你没有在AdminController
中重载AppController
的initialize()
,你就不需要调用它了。我会在您需要两个登录方案时使用角色字段,然后您可以使用isAuthorized()
来管理不同类型的用户。见@cjquinn谢谢你的意见。我发现我可以在beforeFilter()
中加载Auth
组件,而不是initialize()
,它可以工作。同样在breforfilter()
中,我可以使用$this->request->params[“prefix”]
来分隔两个登录方案。Ace,很高兴知道!