CakePHP:Auth组件未登录

0 php cakephp

我现在正在研究CakePHP,我遵循他们给我的每一个方向,我得到了很好的结果,但是当谈到Auth组件(以及他们在网站上教授的非常简单的身份验证)时,我无法管理去做吧.

方法$ this-> Auth-> login()一直返回false,不让我登录.

我没有使用任何比教程更多的东西,我甚至没有哈希密码(冷静下来,我会,但我需要先得到基本的!).

这是我的代码:

模型

App::uses('AppModel', 'Model');

class User extends AppModel {

public $validate = array(
    'username' => array(
        'notEmpty' => array(
            'rule' => array('notEmpty'),
            'required' => true
        ),
    ),
    'password' => array(
        'notEmpty' => array(
            'rule' => array('notEmpty'),
            'required' => true
        ),
    ),
);
Run Code Online (Sandbox Code Playgroud)

AppController的

App::uses('Controller', 'Controller');

class AppController extends Controller {


public $components = array(

    'Session',
    'Auth' => array(

        'loginRedirect'  => array('controller' => 'pages', 'action' => 'display', 'home'),
        'logoutRedirect' => array('controller' => 'Users', 'action' => 'index')

        )

    );


}
Run Code Online (Sandbox Code Playgroud)

用户控制器

App::uses('AppController', 'Controller');

class UsersController extends AppController {

public function login()
{

    if($this->request->is('post'))
    {
        if(!$this->Auth->login())
        {
            $this->Session->setFlash('Invalid Username or Password');
        }
        else
        {
            $this->redirect($this->Auth->redirectUrl());
        }
    }


}

public function logout()
{

    $this->redirect($this->Auth->logout());

}
Run Code Online (Sandbox Code Playgroud)

查看(Users/login.ctp)

<div class="login-box">

<?php echo $this->Session->flash('auth'); ?>

<?php

    echo $this->Form->create();

    echo $this->Form->input('username');
    echo $this->Form->input('password');

    echo $this->Form->end('login');

?>

</div>
Run Code Online (Sandbox Code Playgroud)

小智 5

在将密码保存到数据库之前,您必须对密码进行哈希处理.使用AuthComponent :: login()进行身份验证时,首先对登录表单中输入的密码进行哈希处理,然后使用数据库中的条目进行检查.由于您的数据库中的条目未经过哈希处理,因此检查返回false.

本书中所述,在User :: beforeSave()中散列密码.