Symfony2:UsernamePasswordToken中的$ providerKey实际上做了什么?

时间:2016-03-01 00:38:32

标签: php symfony authentication

我正在尝试了解Symfony2的身份验证层(使用Symfony 2.8)。 UsernamePasswordToken对象正在初始化:

public function __construct($user, $credentials, $providerKey, array $roles = array())

根据一些教程,我在注册控制器中创建了一个方法,用于在提交注册表单后自动验证用户。

private function authenticateUser(User $user)
{
    $providerKey = 'default'; // your firewall name
    $token = new UsernamePasswordToken($user, null, $providerKey, $user->getRoles());
    $this->container->get('security.token_storage')->setToken($token);
}

它有效,但事情是......我不知道它为什么会起作用(这是最糟糕的感觉)。我不知道为什么这样可行,因为有人说$providerKey应该与防火墙相匹配,但我可以把任何我想要的东西放进去,它仍然可以工作。那是为什么?

代码扫描告诉我它只在AuthenticationProviderInterface的实现中使用,但很难从那里更深入。

那么...... $providerKey到底是什么,为什么在创建用于身份验证的UsernamePasswordToken对象时,我在其中放入了什么并不重要?

1 个答案:

答案 0 :(得分:2)

当系统可能支持多种令牌时,提供程序密钥允许安全侦听器和提供程序区分不同的令牌。这主要是为了防止这些服务相互影响。