CakePHP Auth组件消隐密码

时间:2011-02-09 16:01:42

标签: authentication cakephp

我的登录视图有以下代码:

<?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上发现了一些其他类似的问题,但似乎没有一个答案。有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:0)

cakePHP Auth组件将对您的密码进行哈希处理并尝试与DB中的密码匹配 他们使用 salt 对密码进行哈希处理 如果你被设置为MD5然后是 MD5($password.$salt)将与DB中的密码匹配存储。

因此,请确保您存储的密码是正确的。

输入一些虚拟数据。我通常尝试调试$this->Auth->password($password)然后我将复制结果并插入数据库。

如果密码错误,Auth组件将在内部重置密码字段。为什么你会得到这个结果。

Array
(
    [User] => Array
        (
            [email] => myemail@gmail.com
            [password] => 
        )

)

这并不意味着您的密码无法用于检查数据库。

快乐烘焙