4

私はこの投稿から正確に答えましたが、トークン プロパティは null であり、ユーザーは正しくログインしており、ルートはファイアウォールの背後にあります。また、他のサービスに SecurityContext を注入していますが、正常に動作します。

services.xml :

<service id="tc.extensions.relation_helper"
 class="TC\CoreBundle\Extensions\RelationHelperExtension">
    <argument type="service" id="security.context" />
    <tag name="twig.extension" />
</service>

私の拡張子:

class RelationHelperExtension extends Twig_Extension
{
    /**
     * @var User 
     */
    private $user;

    public function __construct(SecurityContext $securityContext){
        $this->user = $securityContext->getToken()->getUser();
    }
4

2 に答える 2

3

この動作を理解するには:

Twig_Extension は SecurityContext 初期化シーケンスの前にインスタンス化されます => この時点で SecurityContext は空です

しかし、それを属性に保存する場合、独自の小枝拡張サービスを使用すると、(ほとんどの場合) Request スコープ内にあり、SecurityContext は適切な値で初期化されます:)

于 2013-12-27T11:14:41.260 に答える