我已经完成了在cakephp 3.2中登录的所有设置,但是在登录时它返回false。
usercontroller中的登录功能
public function login() {
$this->viewBuilder()->layout('');
if ($this->request->is('post')) {
$user = $this->Auth->identify();
pj($user);//returning false
if ($user) {
$this->Auth->setUser($user);
return $this->redirect($this->Auth->redirectUrl());
}
$this->Flash->error(__('Invalid username or password, try again'));
}
}
此函数$user = $this->Auth->identify();
始终返回false。
为什么我不能登录?
在数据库中,密码存储为
$2y$10$4aD6Ye6YcmPGKgI/CmhJBO0E//9tV.KvhJIOFAhajyqt8vfxDVASC
我从$this->request->data
收到了电子邮件和密码。
任何建议都会非常感激。 提前谢谢你。
答案 0 :(得分:4)
请改变如下: -
首先在您的控制器中添加此代码(最好是App控制器): -
public function initialize()
{
parent::initialize();
$this->loadComponent('Auth', [
'loginAction' => [
'controller' => 'Users',
'action' => 'login',
'plugin' => 'Users'
],
'authError' => 'Did you really think you are allowed to see that?',
'authenticate' => [
'Form' => [
'fields' => ['username' => 'email']
]
],
'storage' => 'Session'
]);
}
然后使用您的代码。它会正常工作。
答案 1 :(得分:0)
我遇到了同样的问题。我正在使用Cake 3.7
。适用于使用routes
的用户。
我在路线文件中创建了要登录的路线。
$routes->connect('/login',
['controller' => 'Users', 'action' => 'login'],
['_name' => 'login']
);
现在,当您使用以下代码时,Auth
无法登录,identify()
返回false。
$this->loadComponent('Auth', [
'loginAction' => [
'controller' => 'Users',
'action' => 'login'
],
'loginRedirect' => ['what ... ever'],
'logoutRedirect' => '/',
'authError' => 'Please log in to view your account.',
'authenticate' => [
'Form' => [
'fields' => ['username' => 'email']
]
],
]);
所以...您看到...您必须调用路由名称才能尝试登录。
$this->loadComponent('Auth', [
'loginAction' => ['_name' => 'login'], // <= Here is Mr glitch
'loginRedirect' => ['what ... ever'],
'logoutRedirect' => '/',
'authError' => 'Please log in to view your account.',
'authenticate' => [
'Form' => [
'fields' => ['username' => 'email']
]
],
]);
真的吗?!