如何选择密码编码器算法动态
编辑该页面警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.0,不再维护。
读这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.3(当前的稳定版本)。
如何选择密码编码器算法动态
通常,同一密码编码器用于所有用户通过配置适用于一个特定类的所有实例:
1 2 3 4 5
# app / config / security.yml安全:#……编码器:欧宝娱乐app下载地址Symfony核心组件\ \安全\ \ \用户:sha512
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
< !——app / config /安全。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><srv:容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/security”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xmlns:深水救生艇=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd”><配置>< !——……- - ><编码器类=”欧宝娱乐app下载地址Symfony核心组件\ \安全\ \ \用户”算法=“sha512”/ >< /配置>< /srv:容器>
1 2 3 4 5 6 7 8 9
/ / app / config / security.php美元容器- >loadFromExtension (“安全”,数组(/ /……“编码器”= >数组(S欧宝娱乐app下载地址ymfony的核心组件\ \安全\ \ \用户”= >数组(“算法”= >“sha512”))));
另一个选择是使用一个名为“编码器”,然后选择您要使用的编码器动态。
在前面的示例中,您已经设置sha512
算法Acme \ UserBundle \实体\用户
。这可能是足够安全对于一个普通用户,但如果你想让你的管理员有一个更强的算法,例如bcrypt
。这可以用命名编码器:
1 2 3 4 5 6 7
# app / config / security.yml安全:#……编码器:严厉的:算法:bcrypt成本:15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
< !——app / config /安全。xml - - >< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><srv:容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/security”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xmlns:深水救生艇=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd”><配置>< !——……- - ><编码器类=“苛刻”算法=“bcrypt”成本=“15”/ >< /配置>< /srv:容器>
1 2 3 4 5 6 7 8 9 10
/ / app / config / security.php美元容器- >loadFromExtension (“安全”,数组(/ /……“编码器”= >数组(“苛刻”= >数组(“算法”= >“bcrypt”,“成本”= >“15”))));
这将创建一个编码器严厉的
。为了一个用户
实例来使用它,必须实现的类EncoderAwareInterface。需要一个方法——的接口getEncoderName
——应该返回编码器使用的名称:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src / Acme / / User.php UserBundle /实体名称空间Acme\UserBundle\实体;使用欧宝娱乐app下载地址\组件\安全\核心\用户\用户界面;使用欧宝娱乐app下载地址\组件\安全\核心\编码器\EncoderAwareInterface;类用户实现了用户界面,EncoderAwareInterface{公共函数getEncoderName(){如果(美元这- >isAdmin ()) {返回“苛刻”;}返回零;/ /使用默认的编码器}}
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。