4

假设我是CakePHP的新手。让我们进一步假设我已经完全按照本教程中的内容编写了我的用户身份验证(除了其中的错误让我浪费了一个多小时试图弄清楚)。

2.3的迁移指南bcrypt已将其添加到核心哈希算法中。关于如何实际实现这一点的唯一提示是:

您现在可以在 $authenticate 数组中使用 Blowfish 以允许使用 bcrypt 密码。

我完全不知道这意味着什么,也不知道我现在如何在这里使用 bcrypt。谷歌搜索它只会导致指南,它不会指导我。我很想知道我如何准确地激活它——假设我的设置与上面提到的教程中的一样,在哪里放置选项以及编写什么内容才能正常工作。

此外,这是否需要特殊版本的 PHP,或者它是否适用于 CakePHP 支持的任何版本?

谢谢你。

4

2 回答 2

4

如果您要使用尚未稳定的代码(2.3 是 RC),文档会很吓人,您需要在没有文档的情况下弄清楚一些事情。即使没有文档,代码也可以免费获得并且有注释

Blowfish 有自己的身份验证适配器,您需要使用它。

如果文档没有帮助,您也可以查看测试,因为测试提供了 100 个示例,它比任何文档都好得多。

于 2012-12-13T00:06:25.333 回答
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 设置,这不适用于河豚(它会生成一个新的盐并将其存储在密码哈希中)。

另请注意,CakePHP 中的实现以 $2a$ 作为 salt 前缀,这在 PHP 5.3.7 之前存在安全问题(请参阅此注释)。

于 2013-01-26T16:28:23.607 回答