symfony2的服务构造函数中的getUser

时间:2014-03-01 15:59:40

标签: php symfony symfony-2.3

我的一个Symfony2服务中有一个非常奇怪的问题。 我想在我的服务的构造函数中获取当前用户,但SecurityContext-> getToken返回false!

这是我的服务构造函数:

public function __construct(Registry $doctrine, SecurityContext $context){
    $this->doctrine = $doctrine;
    $this->context = $context;
    if(!$this->context->getToken()){
        echo "Il y a une merde au niveau du token !";
    }
    $this->my_auth = $this->getMyAuth();
}

这里是service.yml中的服务声明

security.autorisation:
    class: Nsi\SecurityBundle\Service\Autorisation
    arguments: [@doctrine,@security.context]

但是当我进入我的管理页面时,会出现“Il y a une merde au niveau du Token”的消息。 最令人惊讶的是我的底部symfony工具栏显示我的登录信息!

我的项目是Symfony 2.3.11项目

考虑你的帮助

2 个答案:

答案 0 :(得分:1)

不要从服务构造函数调用它,因为服务初始化早于身份验证调用。这就是你没有令牌集的原因。

答案 1 :(得分:0)

尝试:

public function __construct(Registry $doctrine, SecurityContext $context){
    $this->doctrine = $doctrine;
    $this->context = $context;
    if(!$this->context->isGranted('ROLE_USER'))){
       echo "Il y a une merde au niveau du token !";
    }
    $this->my_auth = $this->getMyAuth();
}