【问题标题】:Symfony2, Sonata. Update roles without logoutSymfony2,奏鸣曲。无需注销即可更新角色
【发布时间】:2014-12-19 00:31:39
【问题描述】:

需要在不注销的情况下更新用户的角色。我正在使用奏鸣曲管理包:

class CompanyAdmin extends Admin
{
...
public function postPersist($company)
    {       
        $this->checkCompanyAdmin($company);
    }
...
protected function checkCompanyAdmin($company){
        $companyAdmins = $company->getCompanyAdmins();
        if($companyAdmins) {
            $companyDefaultGroup = $company->getDefaultGroup();
            foreach ($companyAdmins as $ca) {
                $ca->addRole('ROLE_COMPANY_'.$company->getId().'_ADMIN');
                $ca->addRole('ROLE_PARTNER');
                $ca->setCompany($company);          
                //***
                if($companyDefaultGroup) {
                    $ca->addGroup($companyDefaultGroup);
                }
            }
        }
        $this->em->flush();
    }   
...

帮助我在不注销的情况下升级角色。

【问题讨论】:

标签: symfony sonata-admin user-roles


【解决方案1】:
$token = new \Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken($ca,null,'main',$ca->getRoles());
$this->getConfigurationPool()->getContainer()->get('security.context')->setToken($token);
$this->getConfigurationPool()->getContainer()->get('fos_user.user_manager')->refreshUser($ca);

只有在 $ca==$this->getUser()

在 securirty.yml 中添加正确的变体: 安全: always_authenticate_before_granting: true

【讨论】:

    猜你喜欢
    • 2017-06-03
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    • 2015-05-19
    • 2014-04-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多