为什么我无法登录用户?

时间:2019-01-08 09:58:49

标签: cakephp cakephp-3.0

这是我在AppController中的initialize方法

public function initialize()
    {
        $this->log('called', LOG_DEBUG);
        $this->loadComponent('Flash');
        $this->loadComponent('Auth', [
            'authenticate' => [
                'Form' => [
                    'fields' => [
                        'username' => 'email',
                        'password' => 'password'
                    ],
                    'userModel' => 'Users'
                ]
            ],
            'authError' => 'Did you really think you are allowed to see that?',
            'storage' => 'Session',
            'loginAction' => [
                'controller' => 'Users',
                'action' => 'login'
            ]
        ]);
        $this->Auth->allow();
    }

这是我的登录方法

public function login()
    {
        $this->log($this->request->getBody(), LOG_DEBUG);
        try {
            if ($this->request->is('post')) {
                $user = $this->Auth->identify();
                if ($user) {
                    $this->log('valid','debug');
                    $this->Auth->setUser($user);
                }else{
                    $this->log('invalid','debug');
                }
            }
        } catch (Exception $e) {
            $this->log($e, LOG_DEBUG);
        }
    }

这是我登录方法中的发帖请求 {“用户名”:“ test@test.com”,“密码”:“ Test @ 123”}

1 个答案:

答案 0 :(得分:1)

这里

                'fields' => [
                    'username' => 'email',
                    'password' => 'password'
                ],

它说“使用email字段作为用户名,使用password作为密码”。您发布的是username而不是email

来自文档:

  

fields-用于标识用户的字段。您可以使用按键   用户名和密码以指定您的用户名和密码字段   分别。

可以与{"email":"test@test.com","password":"Test@123"}一起使用,但这取决于您的用户模型映射。

相关问题