2012-01-01 7 views
4

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

私は、イベントと呼ばれるWebprofilerを見てきました。このページに記載されている自分自身のイベントリスナーを作成し始めました:http://www.dobervich.com/2011/10/13/login-redirection-revisited/しかし、プロファイルは "リスナーではない"のリストに私のリスナーを表示します:security.interactive_login SecurityListener :: onSecurityInteractiveLogin

誰かが知っていますか?この事前ログインチェックをカスタマイズし、ユーザーをページにリダイレクトできますか?

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

は、あなたがカスタム認証成功ハンドラを設定する必要が ラモ

答えて

5

、ありがとうございました。 、

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)); 
} 
+1

ねえクリス:

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

は、その後、あなたのfos_facebookブロックの下にsecurity.ymlにこのハンドラを追加します:ハンドラ自体は次のようになります

firewalls: foo: fos_facebook: success_handler: facebook_auth_success_handler 

AuthenticationSuccessHandlerInterfaceを実装するサービスを設定しますこの解決に感謝します。問題はちょうど、デフォルトのFacebookUserProviderでユーザーが作成され、このユーザーもログインしているので、$ルートにリダイレクトされますが、別のパスを入力すると、ログにしかアクセスできないという問題がありますユーザーでは、私もそこに行きます。私が達成しようとしていることは、このユーザーは単にランディングページと別のページにアクセスできることです。あなたはそれを解決する方法を知っていますか? – ramo

+0

さて、security.contextでユーザーをログアウトさせる方法が見つかった – ramo

関連する問題