Cakephp 3.2用户无法登录

时间:2016-05-03 05:58:40

标签: php mysql cakephp login

我正在开展个人项目,我搜索了与我的问题相关的多个主题,但我无法找到问题的解决方案。 每当我在登录页面上输入电子邮件和密码时,它总会弹出一个无效的用户名或密码。我在UserloginController中调试了一部分代码,它只返回false。这里可能存在问题,但我看不到它。 其他人的一些解决方案是更改密码字段的VARCHAR长度,我的密码字段已经是VARCHAR(255)并且它正确散列,所以这不是问题。 这是我的AppController

class AppController extends Controller
{
    public function isAuthorized($user = null)
    {
        // Any registered user can access public functions
        if (empty($this->request->params['prefix'])) {
            return true;
        }

        // Only admins can access admin functions
        if ($this->request->params['prefix'] === 'admin') {
            return (bool)($user['role'] === 'admin');
        }

        // Default deny
        return false;
    }
    public function initialize()
    {


        $this->loadComponent('Flash');
        $this->loadComponent('Auth', [
            'authenticate' => [
                'Form' => [
                    'userModel' => 'userlogin',
                    'fields' => [
                        'username' => 'email',
                        'password' => 'password'
                    ]
                ]
            ],
            'loginAction' => [
                'controller' => 'userlogin',
                'action' => 'login'
            ],
                'logoutRedirect' => [
                'controller' => 'userlogin', 
                'action' => 'login'
            ],
        ]);

        // Allow the display action so our pages controller
        // continues to work.
        $this->Auth->allow(['display']);
    }

    public function beforeRender(Event $event)
    {
        if (!array_key_exists('_serialize', $this->viewVars) &&
            in_array($this->response->type(), ['application/json', 'application/xml'])
        ) {
            $this->set('_serialize', true);
        }
    }
}

这是我的UserLoginController

class UserloginController extends AppController
{
    public function initialize() {
    parent::initialize();
    $this->Auth->allow(['logout', 'add']);
    }

    //login
    public function login(){
        if ($this->request->is('post')) {
            $user = $this->Auth->identify();
            debug($this->Auth->identify()); // Returns False
            if ($user) {
                $this->Auth->setUser($user);
                return $this->redirect($this->Auth->redirectUrl());
                }
            $this->Flash->error('Your username or password is incorrect.');
        }
    }

    public function logout() {
    $this->Flash->success('You are now logged out.');
    return $this->redirect($this->Auth->logout());
    }
    public function beforeFilter(Event $event) {
    parent::beforeFilter($event);
    $this->Auth->allow('logout', 'login', 'index', 'add'); //you can add others here...
    }

}

这是我的Login.ctp

<br>
<div class="index large-4 medium-4 large-offset-4 medium-offset-4 columns">
    <div class="panel">
<h1>Login</h1>
<?= $this->Form->create(); ?>
<?= $this->Form->input('email'); ?>
<?= $this->Form->input('password'); ?>
<?= $this->Form->button('Login'); ?>
<?= $this->Form->end(); ?>

非常感谢任何形式的帮助!

0 个答案:

没有答案