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 ='不,你 傻子!那不是正确的密码!';
那有什么不对? :(
答案 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!