4

プロジェクトでFOSUserBundleとFOSFacebookBundle(バージョンSF 2.0.x用)を使用しています。さらに、FOSFacebookBundleのドキュメントで説明されているように、カスタムFacebookProviderを実装しました。次のワークフローを実現したいと思います。1。)ユーザーが初めてポータルにアクセスする2.)Facebook-Login-Buttonをクリックする3.)このユーザーがFacebook-Loginをクリックしたかどうかを確認する必要があります-ボタンはすでに私のポータルにFacebook-Friendsを持っています。4.)友達がいる場合は、入力フィールドが事前に入力されたサインアップページ(Facebookからの情報、username、first_name、last_nameなどを含む)にリダイレクトします。5.)私のポータルにFacebookの友達がいない場合は、別のページにリダイレクトします

イベントと呼ばれるWebprofilerを見始めました。次のページで説明されているように、独自のイベントリスナーの作成を開始しました:http://www.dobervich.com/2011/10/13/login-redirection-revisited/ しかし、プロファイルには、「リスナーと呼ばれる」:security.interactive_login SecurityListener :: onSecurityInteractiveLogin

このログイン前チェックをカスタマイズしてユーザーをページにリダイレクトする方法を知っている人はいますか?

これについていくつかの助けを得るのは素晴らしいことです。

ありがとう、ラモ

4

1 に答える 1

5

カスタム認証成功ハンドラーを構成する必要があります。AuthenticationSuccessHandlerInterfaceを実装するサービスを構成します。

facebook_auth_success_handler:
    class: MyHandler
    public: false
    arguments:
        # your dependencies...

次に、このハンドラーをブロックsecurity.ymlの下に追加します。fos_facebook

firewalls:
    foo:
        fos_facebook:
            success_handler: facebook_auth_success_handler

ハンドラー自体は次のようになります。

public function onAuthenticationSuccess(Request $request, TokenInterface $token)
{
    $user = $token->getUser();
    $hasFriendsHereAlready = // your logic here
    if ($hasFriendsHereAlready) {
        $route = 'foo';
    } else {
        $route = 'bar';
    }
    return new RedirectResponse($this->router->generate($route));
}
于 2012-01-02T15:43:07.690 に答える