Contributed by
Iltar van der Berg
in #23508.

Security 在任何程序中都是最讲究技巧的地方。Symfony Security 组件 助你解决绝大部分问题。然而,当开发人员维护的是“遵循着安全领域内最佳实践”的一级一类 security 时,向其提供简便安全工具就变得十分具有挑战。

在安全性上,我们的持续目标就是对某些功能进行简化。这就是为何在 Symfony 4.1 中我们不建议再使用 AdvancedUserInterface。这个方法提供向 user 基类提供了账户“状态旗标”相关的额外方法:

1
2
3
4
5
6
7
8
9
namespace Symfony\Component\Security\Core\User;
 
interface AdvancedUserInterface extends UserInterface
{
    public function isAccountNonExpired();
    public function isAccountNonLocked();
    public function isCredentialsNonExpired();
    public function isEnabled();
}

这些方法最适用于你程序中的 domain logic 部分(译注:db相关逻辑)。我们决定在 Symfony 4.1 中抑制它,并且在 Symfony 5.0 中删除它。此接口并无替代选项。如果你需要这种类型的检查,创建一个 user checker,即可在用户认证时提供附加检查,确定该用户是否能够登录进来。