christian-riesen/password-hash-bundle

此包已废弃,不再维护。未建议替代包。

为symfony2定制的密码编码器,使用php 5.5的新密码哈希api(支持5.3 + 5.4回退)

1.2 2013-01-30 08:51 UTC

This package is auto-updated.

Last update: 2022-02-01 12:23:29 UTC


README

为symfony2定制的密码编码器,使用php 5.5的新密码哈希api(支持5.3 + 5.4回退)。

使用password_compat实现,由Anthony Ferrara提供,为PHP 5.3和5.4提供回退。

在PHP 5.5中,它将忽略回退并使用原生的password_hash函数

安装

使用composer并在你的composer.json中引入库

{
	"require": {
    	"christian-riesen/password-hash-bundle": "1.*",
	}
}

更新后,你将在这个包中找到这个库以及所需的所有库。

现在更新AppKernel.php

    public function registerBundles()
    {
        $bundles = array(
			// ...
            new ChristianRiesen\PasswordHashBundle\PasswordHashBundle(),
		);
	}

现在它已经准备好在app\config目录下的security.yml文件中使用。

    security:
        encoders:
            Symfony\Component\Security\Core\User\User:
                id: security.encoder.passwordhash

如果你有不同的模型,你可以将其更改为该模型,例如,如果你遵循了doctrine entity provider cookbook条目,那么你将得到以下内容

    security:
        encoders:
            Acme\UserBundle\Entity\User:
                id: security.encoder.passwordhash

配置

包含一个单独的配置,bcrypt的成本因子。默认设置为15。我选择不使用内置的默认值,以确保那些资源较少的人可以降低它,或者那些安全性需求较高的人可以提高它。即使这个值改变了,系统也可以读取旧密码而不会有问题,因为成本因子是保存部分的一部分。

要更改默认设置,请将以下内容添加到你的config.yml

cr_passwordhash:
	cost: 5

注意:成本必须是介于4和31之间的整数。

存储

无论你如何存储密码哈希,你都需要始终为它保留60字节。哈希永远不会更短,但总是恰好是这个长度。确保你可以正确地存储它,因为它可能包含可能引起手工查询问题的字符。

盐包含在密码哈希中,因此不需要额外的字段。

测试

要运行测试,你必须通过composer install --dev安装开发需求,以便它们可以运行。symfony安全组件是使其干净运行所需的(对于接口和一个抽象类)。