Symfony でのユーザー ログインの自動化
登録後にユーザーを自動的にログインすると、ユーザー エクスペリエンスを合理化できます。この記事では、標準のログイン フォーム以外でこれを実現する方法を検討します。
ソリューションの概要
プログラムでユーザーをログインするには、Symfony の EventDispatcher を利用できます。インタラクティブなログイン イベントをトリガーします。このプロセスは、ユーザーのセキュリティ トークンをストレージに設定した後に発生します。
コードの実装
ログイン プロセスをコード化する方法の例を次に示します。
<code class="php">use Symfony\Component\EventDispatcher\EventDispatcher, Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken, Symfony\Component\Security\Http\Event\InteractiveLoginEvent; public function registerAction() { // ... if ($this->get("request")->getMethod() == "POST") { // ... Perform any password setting here $em->persist($user); $em->flush(); // Obtain the user's roles $roles = $user->getRoles(); // Create the authentication token $token = new UsernamePasswordToken($user, $user->getPassword(), "public", $roles); // Set the token in the security token storage $this->get("security.token_storage")->setToken($token); // Trigger the interactive login event $event = new InteractiveLoginEvent($request, $token); $this->get("event_dispatcher")->dispatch("security.interactive_login", $event); // ... Redirect the user as desired } }</code>
構成
セキュリティ構成で、目的のログイン ルートに対して匿名アクセスが有効になっていることを確認します。
access_control: - { path: ^/user/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
その他の考慮事項
特定のシナリオに基づいて、必要に応じてトークンのタイプを調整します。表示されている UsernamePasswordToken は一般的なトークンですが、他のオプションが必要になる場合があります。
このソリューションを実装すると、登録時にユーザーを簡単にサインインでき、ユーザーのオンボーディング エクスペリエンスが向上します。
以上が登録後にプログラムでユーザーを Symfony にログインするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。