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>