7

私は2つの領域を持つSymfonyアプリケーションを持っています。1つはWebページからアクセスするクライアント用で、もう1つはAJAXおよびWebサービスからのAPI呼び出し用です。

この領域のそれぞれは、それ自体がファイアウォールで保護されています。WEBインターフェースはログインフォームで認証され、APIは。で認証されますhttp_basic

どちらのファイアウォールも正常に機能しますが、WEBインターフェイスがAPIインターフェイスに対してAJAX呼び出しを行うと、ブラウザは、ユーザーがすでにログインしている場合でも(ログインフォームを介して)、ユーザーに再度ログインするように求めます。これは私が避けたいことです。このプロンプトを防ぐために、両方のファイアウォールを同時に認証したいと思います。

まったく同じ問題の別の質問を見ました。しかし、http_basic両方のファイアウォールで認証を使用しているため、提案されたソリューションは私の場合は機能しませんでした。

1つのログインフォームで複数のsymfony2ファイアウォールを認証します

私のsecurity.yml

#....
firewalls:
    api:
        pattern:    ^/API
        context: primary_auth
        stateless:  true
        http_basic: 
            realm: "API: Please log in"

    web:
        pattern:    ^/
        context: primary_auth
        form_login:
            check_path: /login_check
            login_path: /login
            provider: fos_userbundle
        logout:
            path:   /logout
            target: /
        anonymous: ~
4

1 に答える 1

7

あなたはここを見たいと思うかもしれません: Authenticate multiple symfony2 firewalls with one login formそこに同様の問題の解決策があります

引用:

security:
# providers etc ...

    firewall:
        main:
            pattern: # ...
            provider: my_users
            http_basic: ~
            context: primary_auth  # new
        api:
            pattern: # ...
            provider: my_users
            http_basic: ~
            context: primary_auth  # new
于 2012-10-19T15:40:45.890 に答える