2012-04-15 19 views
3

私は、.comページのデフォルトログインと、特定のユーザのためのデフォルトログイン(例えば、/special)の2つの別々のログインページを持つ方法を理解しようとしています。symfony 2の2つの別々のログインページ

これはSF2プロジェクトで簡単に可能ですか?

UPDATE:

私は私のファイアウォールで次のように構成している(私が使用しているfosub)私は以下の持っているib.login_handlerで

providers: 
    custom: 
     id: ib.user_provider 
    fos_userbundle: 
     id: fos_user.user_manager 
    my_fos_facebook_provider: 
     id: my.facebook.user 

firewalls: 
    special: 
     pattern: ^/special 
     form_login: 
      provider: fos_userbundle 
      login_path: /special/login 
      check_path: /special/login_check 
      use_referer: false 
      default_target_path: /special 
      success_handler: ib.login_handler 
      provider: custom 
    main: 
     pattern: ^/.* 
     form_login: 
      provider: fos_userbundle 
      login_path: /login 
      check_path: /login_check 
      use_referer: false 
      default_target_path:/
      provider: custom 
     fos_facebook: 
      always_use_default_target_path: true 
      app_url: "http://apps.facebook.com/%facebook_app_id%/" 
      server_url: "http://aw.com/aw/web/app_dev.php/" 
      login_path: /login 
      check_path: /login_check/facebook 
      default_target_path: /checkFB 
      success_handler: facebook_auth_success_handler 
      provider: my_fos_facebook_provider 
     logout: 
      #handlers: ["fos_facebook.logout_handler"] 
      target:/
     anonymous: ~ 

:付き

public function onAuthenticationSuccess(Request $request,TokenInterface $token) 
{ 
    if ($this->security->isGranted('ROLE_CATEGORIZER')) 
    { 
     $response = new RedirectResponse($this->router->generate('MyCoBundle_mailAdmin_index')); 
    } 


    return $response; 
} 

をこの設定でmydomain.com/specialに行った場合、次のエラーが表示されます。Fehler:Umleitungsfehler(英語:Error:Redirection error)

UPDATEは:クロームで

は私が取得: "GET /特別/ログイン"

404 Not Found - NotFoundHttpException 
1 linked Exception: ResourceNotFoundException » 

が見つかりませルートは、私はこのログインパスのための特別なルートがありません。私が達成したいのは、特別なユーザーがパス/特別な下のページにのみアクセスできることです。

答えて

8

多くの保護ゾーン=>多数のファイアウォールを定義できます。

firewalls: 

    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 

    special_area: 
     pattern: ^/special 
     anonymous: ~ 
     form_login: 
      check_path: /special/login_check 
      login_path: /special/login 
     logout: 
      path: /special/logout 
      target:/

    general_area: 
     pattern:^
     anonymous: ~ 
     form_login: 
      check_path: /login_check 
      login_path: /login 
     logout: 
      path: /logout 
      target:/


access_control: 
    - { path: ^/_internal, role: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 } 

    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/special/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 

がgeneral_areaのパターンは、他のすべてのものと一致するためspecial_areagenereal_area上で定義されなければならないことに注意してください:

はのは、どのように知っているこのアプリ/設定/ security.ymlファイルの構成を見てみましょう。 ..

あなたのバンドルに追加する必要があるものrouting.yml:

_security_login_special: 
    pattern: /special/login 
    defaults: { _controller: FOSUserBundle:Security:login } 

_security_check_special: 
    pattern: /special/login_check 

_security_logout_special: 
    pattern: /special/logout 

そして、あなたは、あなたがFOSUserManagerをオーバーライドして、それがユーザーの負荷でこの補助的な役割を追加作成する必要があるので、general_areaのための別の役割を追加する必要があります...(ここでは詳細情報:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/1.2.0/Resources/doc/user_manager.md

+0

こんにちは、あなたのポストに感謝。残念ながら、私は上記のセットアップを試行しているエラーwenを取得しています。おそらく私は上記の私のファイアウォール設定を投稿する必要があります – ramo

+0

こんにちは、全体のエラーメッセージを投稿してください;)英語では、私のドイツ語はミュンヘンのオクトーバーフェルトで描かれました;)あなたのルーティングのどのルートにも対応していますか? – AlterPHP

+0

最後に達成したいのは、特別な役割を持つ1人のユーザーが/ specialの下に特別なページしか見ることはできませんが、デフォルトユーザーの他のページを見ることはできないはずです。私は上記のエラーメッセージを貼り付けます。 – ramo

関連する問題