私はSymfony2.1でカスタム認証システムに取り組んできました。Symfonyとの多くの戦いの後、私はうまくいくものを手に入れましたが、完全には機能していません...
問題:(フォームを介した)ログイン後、ユーザーはログに記録されますが、認証されません。
コンテキスト:ユーザーはHTMLフォームを介して資格情報を送信する必要があるため、を拡張するリスナーを作成する必要がありましたAbstractAuthenticationListener
。
質問:リスナーはトークンを自動的に追加するべきではありませんSecurityContext
か?そうでない場合は、手動で行う必要がありますか?
プロセス:
ユーザーはHTMLフォームを介して自分の資格情報を送信します
リスナーはリクエストをインターセプトし、attemptAuthenticationを実行します
リスナーはAuthenticationManagerの(AuthenticationProviderInterfaceを実装する)認証メソッドを呼び出します
AuthenticationManagerはUserProviderを呼び出し(UserProviderInterfaceを実装)、Webサービスからユーザーのデータを取得します。
UserProviderは、UserInterfaceを実装するUserクラスを返します
AuthenticationManagerは、TokenInterfaceを実装するトークンを作成します。
AuthenticationManagerはトークンをリスナーに返します。
リスナーのattemptAuthenticationは、AuthenticationManagerのメソッドからトークンを返します:authenticate
ユーザーはログに記録されますが、認証されていません。
投稿の過負荷を避けるためのコードサンプルは示していません。必要に応じて投稿を編集します。