Cake Php auth问题

时间:2009-07-16 20:03:24

标签: cakephp login authentication

HI,

我在使用auth构建的cake php有问题 - 我无法登录...

1)用户通过app控制面板添加并使用$ this-> auth->密码('xxx')进行哈希 - 我已经检查了它在db中的相关性

2)安全盐不是emtpy

3)实际操作用户/登录数据['用户'] ['密码']为空(我不知道这是否正确,但我读过Auth删除数据内容['密码']或数据['用户'] ['密码'] - 我是否正确?

4)db的表用户使用字段username和password

在我尝试登录$ session-> flash('auth')后说:

  

登录失败。用户名无效或   密码。

但是AppController中的beforeFilter我已经设置了

  

$ this-> Auth-> loginError ='不,你   傻子!那不是正确的密码!';

那有什么不对? :(

5 个答案:

答案 0 :(得分:4)

打开调试并检查生成的查询。 如果没有,您的视图中可能有问题。 如果有,则选择它检查的散列密码并在db中更新密码。 如果你成功,一切都应该正常。

设置第一个用户有点棘手。

答案 1 :(得分:2)

请勿添加:

function beforeSave (){

    if(isset($this->data[$this->alias]['password'])) {
        $this->data[$this->alias]['password'] = Security::hash($this->data[$this->alias]['password'], null, true);
        return true;
    }

}

如果您在app_controller中有以下脚本:

var $ components = array('Auth','Email');

function beforeFilter() {
    $this->Auth->fields = array(
        'username' => 'email',
        'password' => 'password'
    );
}

答案 2 :(得分:1)

确保您已输入

function beforeFilter(){
   parent::beforeFilter();
}

UsersController

答案 3 :(得分:1)

确保您的数据库密码列具有正确的数据类型,即char(40)

答案 4 :(得分:0)

您的问题似乎出现在POST'd数据阵列中。如果data['User']['password']字段为空,我认为您可能已找到问题所在。 IIRC,Auth组件执行密码的自动哈希。但我相信$this->data['User']['password']不应该是空的(在控制器中) - 它不会是明文的。

检查表单以确保输入名称正确无误。另外,与niteria建议一样,尝试检查调试转储中的SQL代码以查看针对数据库检查的凭据(您可以调用$this->Auth->password('somestring')以查找散列密码应该是什么,一旦您你的盐已经应用了。)

GL!