我在 symfony2 应用程序中使用安全组件。
我有一个案例,我需要为来自某个 IP 的流量分配 ROLE_ADMIN。我正在考虑使用匿名身份验证并稍后通过服务为匿名用户分配“ROLE_ADMIN”角色。我觉得这行不通,因为从安全上下文中我可以获得一个用户,但这只是字符串“anon”而不是完整的用户实体对象。无法分配角色。
也许有人可以指出我正确的方向?
我有一个解决方案,最初我想将角色 ROLE_ADMIN 分配给匿名用户,这是不可能的。我创建了一个自定义安全侦听器 + 工厂,它可以工作,但您可以简单地从服务或控制器为安全上下文分配一个新令牌。
$token = new \Symfony\Component\Security\Core\Authentication\Token\AnonymousToken('admin', 'admin', array('ROLE_ADMIN'));
$this->get('security.context')->setToken($token);