Authentication Cakephp身份验证密码散列

Authentication Cakephp身份验证密码散列,authentication,cakephp,hash,cakephp-1.2,Authentication,Cakephp,Hash,Cakephp 1.2,我在新工作中将cakephp应用程序从l.1升级到1.2。我正在用伟大的Auth组件替换国产的1.1授权代码。问题是密码没有在遗留数据库中散列。如何暂时关闭密码哈希,以便开始使用Auth组件 别担心,我会对密码进行哈希运算,稍后再进行更改。从技术上讲,您可以使用下面的查询一次性对数据库中的所有密码进行哈希运算。先备份你的桌子 UPDATE user_table SET password = SHA1(password) 在CakePHP手册中,默认的散列方案是SHA-1,因此除非您对其进行了更

我在新工作中将cakephp应用程序从l.1升级到1.2。我正在用伟大的Auth组件替换国产的1.1授权代码。问题是密码没有在遗留数据库中散列。如何暂时关闭密码哈希,以便开始使用Auth组件


别担心,我会对密码进行哈希运算,稍后再进行更改。

从技术上讲,您可以使用下面的查询一次性对数据库中的所有密码进行哈希运算。先备份你的桌子

UPDATE user_table SET password = SHA1(password)

在CakePHP手册中,默认的散列方案是SHA-1,因此除非您对其进行了更改,否则应该这样做
SHA1
是一个内置的MySQL函数,尽管我假设它在大多数其他数据库中也可用。

下面是根据另一个堆栈溢出答案改编的解决方案。通过重写User::hashPassword模型,基本上什么也不做



我知道我可以用这种方式散列密码,但我只想暂时关闭它。此外,cakephp使用salt,所以这是个坏主意。也许以后您需要创建一个脚本来选择,然后通过Security::hash()进行哈希。CakePHP Security::hash()将要哈希的字符串作为前缀,并使用app/config/core.phpy中的Security salt值。您还需要配置AuthComponent以根据用户模型进行身份验证,以利用此$this->Auth->authenticate=$this->User;实际上,这在CakePHP2.x中对我不起作用,所以我不得不创建这样一个自定义的auth组件-
<?php
class User extends AppModel {
    var $name = 'User';

    // this is used by the auth component to turn the password into its hash before comparing with the DB
    function hashPasswords($data) {
         return $data;
    }
}
?>