让我们假设我是CakePHP的新手。让我们进一步假设我已经完全按照this tutorial中所写的那样编写了我的用户身份验证(除了它中的错误使我浪费了一个多小时试图弄清楚)。
Migration Guide for 2.3表示bcrypt
已添加到核心哈希算法中。关于如何实现这一目标的唯一提示是:
您现在可以在$ authenticate数组中使用Blowfish来允许使用bcrypt密码。
我完全不知道这意味着什么以及我现在如何在这里使用bcrypt。谷歌搜索它只导致指南,这不指导我。我很想知道我是如何激活它的 - 在哪里放置选项以及写什么以便它可以工作,假设我的设置就像上面提到的教程一样。
此外,这是否需要特殊版本的PHP,还是可以在CakePHP支持的任何版本上运行?
谢谢。
答案 0 :(得分:4)
如果你打算使用尚未稳定的代码(2.3是RC),那么docs将是一种恐慌,你需要在没有文档的情况下解决一些问题。即使没有文档,代码也是免费提供的has comments
Blowfish有你自己需要使用的Auth adaptor。
如果文档没有帮助,你也可以查看tests,因为测试提供的100个例子远比任何文档好。
答案 1 :(得分:3)
如果您已经成功使用表单身份验证,则将'Form'
替换为'Blowfish'
作为身份验证适配器,即
class AppController extends Controller {
public $helpers = array("Html","Form", "Js", "Csv");
public $components = array(
'Auth' => array(
'authenticate' => array(
'Blowfish' => array(/* your settings */)
)
)
);
/* ... */
}
然后,您需要将来电更改为AuthComponent::password
(如果您可能在用户模型的beforeSave
中遵循教程)
AuthComponent:password($pwd)
到
Security::hash($pwd,'blowfish');
因为实现了AuthComponent的密码方法以使用您的Security.salt设置,该设置不适用于blowfish(它会生成一个新的盐并将其存储在密码哈希中)。
另请注意,CakePHP中的实现前缀为$ 2a $,它在PHP 5.3.7之前存在安全问题(参见this note)。