我是CakePHP的新手。 我最近接手了一个在CakePHP v 1.2.4.8284中构建的项目。 我正在尝试更改登录页面的密码。 只有一个用户存储在mysql数据库中。
字段 - id,用户名,密码(varchar 40),nacl(char(6),firstname,lastname
在phpAdmin中,我尝试在使用SHA1功能时更改密码,但这不起作用。 我甚至尝试过创建新用户,但新用户信息也无法正常工作。
我已将其缩小到以下if语句中的usercontroller
:
if ($results && $results['User']['password'] == sha1($results['User']['nacl'] . sha1($this->data['User']['password'])))
看起来数据库中的密码应该有sha1(nacl field)
+ sha1(password field)
。
但它全部都包含在sha1中。
我不确定加密是如何工作的。
任何帮助都将不胜感激。
提前致谢。
这是完整的登录功能。
function login()
{
$this->set('error', false);
if ($this->Session->read('user'))
{
$this->redirect('/test-folder/');
} else {
$this->User->set($this->data);
if ($this->data) {
//$results = $this->User->findByUsername($this->data['User']['username']);
$results = $this->User->find('first', array(
'conditions' => array('username' => $this->data['User']['username'])
));
if ($results && $results['User']['password'] == sha1($results['User']['nacl'] . sha1($this->data['User']['password']))) {
$this->Session->write('user', $this->data['User']['username']);
$this->Session->write('admin', $results['User']['group']);
$this->redirect('/test-folder/');
} else {
$this->set('error', true);
}
}
}
}
答案 0 :(得分:1)
输入密码'yourplainpassword'
更新用户SET密码= SHA1(CONCAT('securitysaltvalue','yourplainpassword'))WHERE id = 123
答案 1 :(得分:0)
根据您的代码,您应该能够使用以下步骤生成新密码:
1)生成密码,例如“test123”
2)获取要更改密码的用户的ID,例如123
3)在phpMyAdmin中执行此SQL(替换我的演示值!!!)
UPDATE user SET password = CONCAT( SHA1(nacl), SHA1("test123")) WHERE id = 123
请在任何更改之前在该表上进行完整的数据库转储。更好的是,测试一些开发实例。
答案 2 :(得分:0)
@StefanoDP的答案有效,但表名是'用户',而不是'用户'。所以命令应该是:
UPDATE users SET password=SHA1(CONCAT('securitysaltvalue','yourplainpassword')) WHERE id=123;
不要忘记在声明的末尾添加分号。