我的一个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项目
考虑你的帮助
答案 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();
}