0

我解释。我有 2 个内核:AdminKernelApiKernel.

api 的会话使用 admin 的会话(in 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. 多个防火墙不共享安全上下文 如果您使用多个防火墙并且您针对一个防火墙进行身份验证,您将不会自动针对任何其他防火墙进行身份验证。不同的防火墙就像不同的安全系统。为此,您必须为不同的防火墙明确指定相同的防火墙上下文。但通常对于大多数应用程序来说,拥有一个主防火墙就足够了。
于 2013-08-22T22:39:38.113 回答