我正在将我的新工作中的 cakephp 应用程序从 l.1 升级到 1.2。我正在用强大的 Auth 组件替换自制的 1.1 授权代码。问题是密码没有在遗留数据库中散列。如何暂时关闭密码散列,以便开始使用 Auth 组件。
别担心,我会散列密码并稍后更改。
我正在将我的新工作中的 cakephp 应用程序从 l.1 升级到 1.2。我正在用强大的 Auth 组件替换自制的 1.1 授权代码。问题是密码没有在遗留数据库中散列。如何暂时关闭密码散列,以便开始使用 Auth 组件。
别担心,我会散列密码并稍后更改。
这是改编自另一个堆栈溢出答案的解决方案。通过覆盖 User::hashPassword 模型基本上什么都不做。
<?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;
}
}
?>
从技术上讲,您可以使用下面的查询一举散列数据库中的所有密码。首先备份您的表!
UPDATE user_table SET password = SHA1(password)
在 CakePHP 手册中,默认的散列方案是 SHA-1,所以除非你改变它,否则应该这样做。SHA1
是一个内置的 MySQL 函数,尽管我认为它在大多数其他数据库中也可用。