$这 - > Auth->确定();在cakephp 3.2中返回false

时间:2016-02-11 06:28:53

标签: php login cakephp-3.0 cakephp-3.x

我已经完成了在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收到了电子邮件和密码。

任何建议都会非常感激。 提前谢谢你。

2 个答案:

答案 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']
            ]
        ],
    ]);

真的吗?!