ログイン フォームを通過せずにプログラムでユーザーを認証する方法
ログイン フォームを使用せずにプログラムでユーザーを認証するには、以下に概要を説明するメソッドと同様のメソッド:
<code class="php">use Symfony\Component\EventDispatcher\EventDispatcher, Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken, Symfony\Component\Security\Http\Event\InteractiveLoginEvent; public function registerAction() { // Handle the POST request and any necessary password settings if ($this->get("request")->getMethod() == "POST") { $em->persist($user); $em->flush(); // Determine the relevant firewall name from your security.yml $firewallName = "public"; // Create the token and add it to the token storage $token = new UsernamePasswordToken($user, $user->getPassword(), $firewallName, $user->getRoles()); $this->get("security.token_storage")->setToken($token); // Dispatch the login event to complete the authentication process $request = $this->get("request"); $event = new InteractiveLoginEvent($request, $token); $this->get("event_dispatcher")->dispatch("security.interactive_login", $event); } }</code>
このコードでは、ユーザー オブジェクト、そのパスワード、およびファイアウォール名を使用して UsernamePasswordToken を作成します。次に、このトークンをトークン ストレージに設定し、ユーザーを効果的にログインさせます。最後に、必要なログイン イベントを起動します。
注: トークンを直接設定するため、イベントの起動は重要です。このイベントは自動的にはトリガーされません。特定の使用例に応じて、トークンのタイプを調整する必要がある場合があります。
以上がログインフォームを使用せずに、Symfony でプログラム的にユーザーを認証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。