0

私は説明する。私は 2 つのカーネルを持っています:AdminKernelApiKernel.

api のセッションは、admin のセッションを使用します ( 内api/config/config.yml):

framework:
    session:
        save_path: %kernel.root_dir%/../admin/cache/%kernel.environment%/sessions

security.yml一般的です:

security:

    ...    
    firewalls:
        ...
        admin_login:
            pattern:  ^/admin/user/login$
            security: false

        api:
            pattern: ^/api
            http_basic: ~

        admin:
            pattern:    ^/admin
            form_login:
                check_path: /admin/user/login_check
                login_path: /admin/user/login
                default_target_path: /admin
            logout:
                path:   /admin/user/logout
                target: /admin
            remember_me:
                key:      G>n[,O+^@F)j2_0^yFR_(|q<X~YtGD2:PV3zuktP0+/u*We]Ix$An X:m!#eeYEx
                lifetime: 3600
                path:     /
                domain:   ~ # Defaults to the current domain from $_SERVER
        ...

にいるhttp://localhost/admin/listと、セッションが作成されます。そして、 ajax 呼び出しを使用して、 URL で何らかのアクションを実行したいと考えていますhttps://localhost/api/update/page。ブラウザには認証ボックス (http_basic) が表示され、管理者セッションは使用されません。

私の質問は次のとおりです。管理セッションが存在する場合はAPIにどのように伝えますか?それ以外の場合は認証ボックスを表示しますか?

4

1 に答える 1

0

Symfony2 ドキュメントから:

http://symfony.com/doc/current/book/security.html

  1. 複数のファイアウォールがセキュリティ コンテキストを共有しない 複数のファイアウォールを使用していて、1 つのファイアウォールに対して認証する場合、他のファイアウォールに対して自動的に認証されることはありません。異なるファイアウォールは、異なるセキュリティ システムのようなものです。これを行うには、異なるファイアウォールに対して同じファイアウォール コンテキストを明示的に指定する必要があります。ただし、通常、ほとんどのアプリケーションでは、メイン ファイアウォールが 1 つあれば十分です。
于 2013-08-22T22:39:38.113 に答える