我正在尝试使用CakePHP来创建基本的登录功能。到目前为止CakePHP正在赢得胜利。我遵循了基本的博客教程,基于此我尝试创建一个类似于登录的东西。
我唯一的区别是我没有使用用户模型,而是使用自定义雇主模型,我使用电子邮件/密码而不是用户名/密码。
然而,我得到的是“您的用户名或密码不正确。”
AppController.php
App::uses('Controller', 'Controller');
class AppController extends Controller {
public $components = array(
'Session',
'Auth' => array(
'loginRedirect' => array(
'controller' => 'schedules',
'action' => 'index'
),
'logoutRedirect' => array(
'controller' => 'employers',
'action' => 'login',
'home'
),
'authenticate' => array(
'Form' => array(
'fields' => array(
'username' => 'email',
'password' => 'password'
),
'userModel' => 'Employer',
'passwordHasher' => 'Blowfish'
)
)
)
);
}
EmployersController.php
<?php
App::uses('AppController', 'Controller');
class EmployersController extends AppController {
public $helpers = array('Form');
public function beforeFilter()
{
parent::beforeFilter();
$this->Auth->allow('login');
}
public function login()
{
$layout = 'login';
$this->layout = $layout;
if($this->request->is('post'))
{
debug($this->Auth->login());
if($this->Auth->login())
{
return $this->redirect($this->Auth->redirect());
}
else
{
$this->Session->setFlash('Your username or password was incorrect.');
}
debug($this->request->data['Employers']['password']);
}
}
}
Login.ctp
<div id="login-container">
<h1>Login</h1>
<?php
echo $this->Form->create('Employers');
echo $this->Form->input('email', array('label' => false, 'placeholder' => 'Email'));
echo $this->Form->input('password', array('label' => false, 'placeholder' => 'Password'));
echo $this->Form->submit();
echo $this->Form->end();
?>
当我调试$ this-&gt; request-&gt;数据时,数据的结构就像数据[“雇主”] ['电子邮件']&amp;数据[ “雇主”] [ '密码']。这可能是不对的,因为我的模型叫做雇主。
这是否正确并且登录功能是否会中断?如果是,我该如何解决? 或者还有其他我忽略的东西。
答案 0 :(得分:2)
在你的login.ctp中,
它应该是echo $this->Form->create('Employer');
而不是s,所以删除s并尝试它。
希望它有所帮助。