我的登录视图有以下代码:
<?php
echo $session->flash('auth');
echo $this->Form->create('User', array('action' => 'login'));
echo $this->Form->input('email');
echo $this->Form->input('password');
echo $this->Form->end('Login');
?>
这将生成以下HTML:
<div id="authMessage" class="message">Login failed. Invalid username or password.</div>
<form id="UserLoginForm" method="post" action="/control/users/login" accept-charset="utf-8">
<div style="display: none;"><input name="_method" value="POST" type="hidden"></div>
<div class="input text required">
<label for="UserEmail">Email</label>
<input name="data[User][email]" maxlength="255" value="" id="UserEmail" type="text">
</div>
<div class="input password">
<label for="UserPassword">Password</label>
<input name="data[User][password]" id="UserPassword" type="password">
</div>
<div class="submit"><input value="Login" type="submit"></div>
</form>
App Controller:
function beforeFilter()
{
$this->Auth->fields = array (
'username' => 'email',
'password' => 'password'
);
}
当我尝试登录时,出现错误,我的密码不正确。这是$ this-&gt; data:
的转储Array
(
[User] => Array
(
[email] => myemail@gmail.com
[password] =>
)
)
我在stackoverflow上发现了一些其他类似的问题,但似乎没有一个答案。有谁知道为什么会这样?
答案 0 :(得分:0)
cakePHP Auth组件将对您的密码进行哈希处理并尝试与DB中的密码匹配
他们使用 salt 对密码进行哈希处理
如果你被设置为MD5然后是
MD5($password.$salt)
将与DB中的密码匹配存储。
因此,请确保您存储的密码是正确的。
输入一些虚拟数据。我通常尝试调试$this->Auth->password($password)
然后我将复制结果并插入数据库。
如果密码错误,Auth组件将在内部重置密码字段。为什么你会得到这个结果。
Array
(
[User] => Array
(
[email] => myemail@gmail.com
[password] =>
)
)
这并不意味着您的密码无法用于检查数据库。
快乐烘焙