2017-01-29 14 views
1

私のプロジェクトでは、form_loginとCasという2つのメソッドを1つのプロバイダ(ユーザ)で使用します。 私はsecurity.ymlにlogin_formを設定し、Guard for Casを作成しました。
多くのテストの後、私は2つの認証を共存させることができました。
私は自分のページにajaxを入れ始めました。私は新しい問題に直面しています。私のすべてのajax呼び出しはログインページにリダイレクトされます。
すべての私のAJAXのルートが/ API /で開始すると、私はsecurity.ymlファイルajaxリクエストのログインページにリダイレクト

- {path: ^/api, roles: IS_AUTHENTICATED_ANONYMOUSLY} 

に入れてみました。しかし、私はまだログインページにリダイレクトしています...

私は見てきました3日以来の説明ですが、まだ見つかりません。

私のsecurity.yml

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

    login_firewall: 
     pattern: ^/login$ 
     anonymous: true 
    main: 
     pattern: ^/ 
     anonymous: false 
     form_login: 
      provider: database 
      login_path: login 
      check_path: login_check 
      csrf_token_generator: security.csrf.token_manager 
      csrf_token_id: bien_authentifie 
      always_use_default_target_path: true 
      default_target_path: home 
     logout: 
      path: caslogout 
      target: https://xxx.xxxx.nnn/cas/logout 
     switch_user: true 
     guard: 
      provider: database 
      authenticators: 
       - xxx.cas_authenticator 


access_control: 
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/api, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/admin/, roles: ROLE_ADMIN } 
    - { path: ^/, roles: ROLE_USER } 
+0

と ACCESS_CONTROL作業のためanonymous: ~なければならない問題だったので明らかでした: ' - {path:^ /、roles:ROLE_USER}'では、アプリケーションのすべてのパスがファイアウォールの内側にあります。だからあなたのAPIは、私が思うにログインへのリダイレクトを呼び出すのです。 'IS_AUTHENTICATED_ANONYMOUSLY'に変更すると問題が解決される可能性があります。 – mickdev

+0

はい、私のURLはすべて/api/で始まりますが、access_controlの - {path:^/api、roles:IS_AUTHENTICATED_ANONYMOUSLY}です。それは大丈夫でしょうか? – lemairep

+0

私は自分のアプリケーションで簡単にテストを行いました。はい、ファイアウォールの背後に「/」を付けると、すべてのURLが認証用のログインページにリダイレクトされます。 – mickdev

答えて

0

私が見つけた:C)
anonymous: falseは、それがこれによればIS_AUTHENTICATED_ANONYMOUSLY

関連する問題