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 }
と ACCESS_CONTROL作業のため
anonymous: ~
なければならない問題だったので明らかでした: ' - {path:^ /、roles:ROLE_USER}'では、アプリケーションのすべてのパスがファイアウォールの内側にあります。だからあなたのAPIは、私が思うにログインへのリダイレクトを呼び出すのです。 'IS_AUTHENTICATED_ANONYMOUSLY'に変更すると問題が解決される可能性があります。 – mickdevはい、私のURLはすべて/api/で始まりますが、access_controlの - {path:^/api、roles:IS_AUTHENTICATED_ANONYMOUSLY}です。それは大丈夫でしょうか? – lemairep
私は自分のアプリケーションで簡単にテストを行いました。はい、ファイアウォールの背後に「/」を付けると、すべてのURLが認証用のログインページにリダイレクトされます。 – mickdev