Symfony欧宝娱乐app下载地址 5.3的新功能:对安全用户的改进
警告:这篇文章是关于一个不受支持的Symfony版本。欧宝娱乐app下载地址有些信息可能已经过时了。阅读最新的Symfony文档欧宝娱乐app下载地址.
重命名用户
来InMemoryUser
在Sy欧宝娱乐app下载地址mfony应用程序中,内存用户提供商允许在内存中加载的配置文件中创建用户(并定义他们的凭据),而不使用数据库或任何其他持久化服务。
尽管此用户提供程序仅用于原型或非常小/特殊的应用程序,但它基于一个名为用户
(整个命名空间为欧宝娱乐app下载地址
).这让一些新来者感到困惑,他们认为这是主要的用户
类的Symfony欧宝娱乐app下载地址安全性。
这就是为什么在Symfony欧宝娱乐app下载地址 5.3中我们重命名了用户
来InMemoryUser
而且UserChecker
来InMemoryUserChecker
以便更好地传达它们的目的(在5.3中旧的名称仍然有效,但它们已被弃用,在Symfony 6.0中它们将被删除):欧宝娱乐app下载地址
1 2 3 4 5
#配置/包/安全。Yaml安全:password_hashers:- 欧宝娱乐app下载地址Symfony\组件\安全\核心\用户\用户:bcrypt+ 欧宝娱乐app下载地址Symfony\组件\安全\核心\用户\InMemoryUser: bcrypt
重命名用户名
来标识符
与用户相关的另一个混淆来源是Symfony安全性中使用的“用户名”概念。欧宝娱乐app下载地址在许多应用程序中,这个用户名不是传统的用户名,而是电子邮件,甚至是一些API令牌。
这就是为什么在Symfony欧宝娱乐app下载地址 5.3中我们决定避免这种混淆我们将username重命名为user identifier.这可能需要在应用程序代码中进行一些更改(在5.3中旧的名称仍然有效,但它们已被弃用,在Symfony 6.0中它们将被删除):欧宝娱乐app下载地址
用户界面:getUsername ()
现在是用户界面:getUserIdentifier ()
loadUserByUsername ()
现在是loadUserByUserIdentifier ()
,在用户加载程序和用户提供程序中UsernameNotFoundException
现在是UserNotFoundException
密码与用户解耦
的欧宝娱乐app下载地址
由Symfony应用程序中的所有安全用户实现。欧宝娱乐app下载地址遗憾的是,这个接口是时代的产物,它包含的一些方法在现代应用程序中不再使用。
第一个不需要的方法是getSalt ()
,当使用现代密码哈希算法(bcrypt, Argon2等)时不再需要LegacyPasswordAuthenticatedUserInterface
.
另一种方法是getPassword ()
这在许多无密码功能中已经不再需要,比如登录链接.这种方法已被转移到一种新的PasswordAuthenticatedUserInterface
.
在Sy欧宝娱乐app下载地址mfony 5.3中,用户界面
仍然包含getPassword ()
而且getSalt ()
方法(它们将在Symfony 6.0中被删除)。欧宝娱乐app下载地址但是,当升级到Symfony 5.3时,如果使用这些方欧宝娱乐app下载地址法,就需要实现新的接口。
评论
我认为“用户标识符”比“安全标识符”更好:它是最具体的(“security”仍然是通用的),而且它比“security”更短(所以不那么拗口;-))。如果你不同意,请在https://github.com/symfony/symfony/issues/new/上打开一个问题来讨论更欧宝娱乐app下载地址详细的内容!
在接口中声明它将是BC中断,因为实现它的每个类都必须拥有该方法。
他们只是在注释中暗示了该方法,所以我们可以为Symfony 6做准备。欧宝娱乐app下载地址
实际的声明将在Symfony 6中欧宝娱乐app下载地址
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。
Lyubomir Grozdanov is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now