2017-01-18 3 views
-3

私はuser_idを持っています。
このuser_idを使用すると、対応するユーザーオブジェクトが見つかりました。
しかし、このユーザーにログインします。
user_id値のみを使用してこのユーザーにログインすることはできますか?symfony3でprogram_user_idによってのみプログラムにログインする方法は?

+0

気軽に詳細を入力してください... – Preciel

+0

私はちょうどuser_idによってユーザにログインしたいと思います –

答えて

4

はようなものになる:

public function loginUser(Request $request, UserInterface $user) 
{ 
    $firewallName = 'whatever'; 
    $securityTokenStorage = $this->get('security.token_storage'); 
    $eventDispatcher = $this->get('event_dispatcher'); 

    $token = new UsernamePasswordToken($user, null, $firewallName, $user->getRoles()); 

    $securityTokenStorage->setToken($token); 

    $event = new InteractiveLoginEvent($request, $token); 

    $eventDispatcher->dispatch(SecurityEvents::INTERACTIVE_LOGIN, $event); 
} 

しかし、私は強くあなたがここで起こって代わりのコピー/貼り付けを行っているかを理解するには時間がかかることをお勧め。この種のものは扱いにくいものです。

+0

ok私はこれを慎重に行うでしょう –

+0

UsernamePasswordToken()関数の背後には何がありますか? –

+2

これは関数ではなく、クラスです。 symfonyのセキュリティシステムは、ユーザを直接扱うのではなく、トークンを扱います。最終的に、このトークンはセッションに格納され、リクエスト間で存続するため、ユーザーはログインしたままになります。このコードを理解する必要があります。まず、ドキュメントのセキュリティセクションを読んでください。 – Cerad

関連する問題