2016-06-08 76 views
0

我知道这已被问过好几次,但很多人在CakePHP 2.0中遇到问题,而不是1.3。另外,没有人为这类问题提供正确的解决方案。CakePHP 1.3身份验证组件在登录时没有散列密码

注册工作就好了。它按照预期的方式散列密码。 在表单中输入密码不会让用户登录,而输入散列密码(与在db中相同)不会!

发送数据后,Auth组件是不是应该散列密码?

下面的代码(我知道我应该消毒的投入,我会做,后来)

UsersController

class UsersController extends AppController{ 

var $uses = array('Project','User','ProjectsUser'); 
var $helpers = array('Html'); 
var $components = array('RequestHandler','Auth'); 


function beforeFilter(){ 
    parent::beforeFilter(); 
    $this->Auth->allow('register'); 
    $this->Auth->fields = array('username' => 'email', 'password' => 'password'); 
    $this->Auth->loginRedirect = array('controller' => 'projects', 'action' => 'dashboard'); 
} 

function login() { 

} 

function logout() { 
    $this->redirect($this->Auth->logout()); 
} 

function register(){ 
    if($this->RequestHandler->isPost()){ 
     if(!empty($this->data)){ 
      $email = $this->data['email']; 
      $password = $this->Auth->password($this->data['password']); 
      $first_name = $this->data['first_name']; 
      $last_name = $this->data['last_name']; 

      $data = array('email' => $email,'password'=>$password,'first_name' => $first_name,'last_name' => $last_name); 

      $bool = true; 
      $bool &= $this->User->save($data); 

      if($bool){ 
       $this->setInitMsg('OK','Your account has been successfully created!'); 
       $this->redirect('/projects/dashboard'); 
      }else{ 
       $this->setInitMsg('ERROR', "Couldn't create an account"); 
       $this->redirect($this->referer()); 
      } 
     } 
    } 
} 
} 

AppController的

class AppController extends Controller{ 
    public $data; 
    var $components = array('Session','Auth'); 

    public function beforefilter(){ 
     $this->data = $this->params['form']; 
    } 
} 

登录查看

<form class="form-signin" method="post"> 
    <input type="text" class="form-control" name="email" placeholder="Email" required autofocus> 
    <input type="password" class="form-control" name="password" placeholder="Password" required> 
    <button class="btn btn-lg btn-primary btn-block" type="submit"> 
       Sign in</button> 
</form> 

回答

0

AuthComp onent需要数据这样

Array 
(
    [User] => Array 
    (
     [username] => [email protected] 
     [password] => 8ed3b7e8ced419a679a7df93eff22fae 
    ) 
) 

我的代码是缺少“用户”键发送