成功登录用户后,Cakephp3立即重定向回登录页面
我在cake php3中有一个小应用程序,它有一个前端和一个管理后端。我试图保护管理员后端中的控制器,以便在用户继续操作之前要求进行身份验证,但在遵循cakephp3上的教程后,我发现$this->Auth->user()返回null,用户立即重定向回登录页面 我在/src/Controller/Admin/userscocontroller.php中的登录函数成功登录用户后,Cakephp3立即重定向回登录页面,php,cakephp,cakephp-3.0,Php,Cakephp,Cakephp 3.0,我在cake php3中有一个小应用程序,它有一个前端和一个管理后端。我试图保护管理员后端中的控制器,以便在用户继续操作之前要求进行身份验证,但在遵循cakephp3上的教程后,我发现$this->Auth->user()返回null,用户立即重定向回登录页面 我在/src/Controller/Admin/userscocontroller.php中的登录函数 public function login() { if ($this->request->is ( 'post
public function login() {
if ($this->request->is ( 'post' )) {
$user = $this->Auth->identify ();
if ($user) {
die(var_dump($user));// returns the user details correctly
$this->Auth->setUser ( $user );
return $this->redirect($this->Auth->redirectUrl());
}
$this->Flash->error ( __ ( 'Invalid username or password, try again' ) );
}
}
public function beforeFilter(Event $event) {
parent::beforeFilter ( $event );
$this->Auth->allow ( [ 'logout' ] );
}
在我的路线上我有
Router::prefix ( 'admin', function ($routes) {
$routes->connect ( '/', [
'controller' => 'Admin',
'action' => 'dashboard'
]);
$routes->connect ( '/pages/*', [
'controller' => 'Admin',
'action' => 'dashboard'
] );
$routes->fallbacks ( 'InflectedRoute' );
})
在我的APPController中,我有这个
public function initialize() {
$this->loadComponent ( 'Flash' );
// $this->loadComponent('Auth');
$this->loadComponent ( 'Auth', [
'authorize' => ['Controller'], // Added this line
'loginRedirect' => [
'controller' => 'Admin',
'action' => 'dashboard'
],
'logoutRedirect' => [
'controller' => 'Users',
'action' => 'login'
],
'authenticate'=> [
'Form' => [
'fields' => [
'username' => 'email',
'password' => 'password'
]
]
]
] );
}
public function beforeFilter(Event $event) {
if ((isset ( $this->request->prefix ) && ($this->request->prefix === 'admin'))) {
$this->layout = 'admin';
}
//exit(var_dump($this->Auth->user()));
if ($this->request->prefix !== 'admin') {
$this->Auth->allow (); //allow all other parts of the site to work
}
}
public function isAuthorized($user) {
if (isset ( $user ['role'] ) && $user ['role'] === 'admin') {
return true;
}
// Default deny
return false;
}
在我的/src/COntroller/Admin/AdminController.php中,我有这个
public function beforeFilter(Event $event) {
parent::beforeFilter ( $event );
}
public function index() {
return $this -> render('TestView/index');
}
public function dashboard(){
}
我得到的任何帮助都将受到感激。我已经上网搜索了好几天了。我是cakephp新手,但我相信我一定做错了什么。如果需要,我可以对代码提供更多的见解。提前感谢。您是如何在数据库中存储密码的?它们需要以特定的方式散列,以便Cake能够对用户进行身份验证。请参阅。我在cake php文档中使用普通哈希方法存储了密码。凭据正常工作。当我尝试无效的凭证时,会收到“无效用户名/密码”消息。但是当我尝试有效的方法时,它会重定向回登录页面,不显示任何消息。如果您更改
isAuthorized
方法,则会发生什么情况,因此它总是返回true
?该方法永远不会被调用!您似乎只允许通过$this->Auth->allow
注销,请尝试将登录
添加到其中。您是如何在数据库中存储密码的?它们需要以特定的方式散列,以便Cake能够对用户进行身份验证。请参阅。我在cake php文档中使用普通哈希方法存储了密码。凭据正常工作。当我尝试无效的凭证时,会收到“无效用户名/密码”消息。但是当我尝试有效的方法时,它会重定向回登录页面,不显示任何消息。如果您更改isAuthorized
方法,则会发生什么情况,因此它总是返回true
?该方法永远不会被调用!您似乎只允许通过$this->Auth->allow
注销,请尝试将登录
添加到其中