Php 在Symfony2中添加Rol

Php 在Symfony2中添加Rol,php,symfony,doctrine-orm,symfony-2.1,Php,Symfony,Doctrine Orm,Symfony 2.1,我可以在InteractiveEngineevent的symfony2中动态添加Rol吗?或者我可以在角色中的访问控制定义中输入security.yml:这样的字符串角色\u INTRANET.*?嗯。。。您可以在InteractiveEngineEvent上向用户添加角色: ... public function onSecurityInteractiveLogin(InteractiveLoginEvent $event) { $user = $event->getAuthen

我可以在InteractiveEngineevent的symfony2中动态添加Rol吗?或者我可以在
角色中的访问控制定义中输入security.yml:
这样的字符串
角色\u INTRANET.*

嗯。。。您可以在InteractiveEngineEvent上向用户添加角色:

...
public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
{
    $user = $event->getAuthenticationToken()->getUser();
    $user->addRole('ROLE_INTRANET');
    $event->getAuthenticationToken()->setUser($user);
    ...
}
...
方法addRole应在用户类中实现


一个问题:为什么要添加角色?出于什么目的?

如果你解决了问题,请重写你的评论作为答案并接受它。我解决了我的问题,我只是修改函数getRoles如下…
public function getRoles(){$rol=new\THEBUNDLE\Entity\AclRoles();$rol->setRol(“ROLE_INTRANET”);$this->addRole($rol);return$this->getUserRoles()->toArray()}
因为这些角色是静态的,不在数据库中。例如,如果用户通过外部网访问成功登录,应用程序将加载该用户拥有的所有角色,以及一个名为ROLE_EXTRANET的额外角色。最后一个角色位于access_control(路径:^/extranet/*,角色:ROLE_extranet,需要_channel:https)部分的文件“security.yml”中,该文件允许在具有前缀^/extranet/的应用程序中导航*