Symfony2:我可以对一个防火墙使用2机制身份验证吗?

时间:2013-01-04 14:50:14

标签: ajax security api symfony

我解释一下。我有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,否则使用它,否则显示身份验证框?

1 个答案:

答案 0 :(得分:0)

来自Symfony2文档:

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

  
      
  1. 多个防火墙不共享安全上下文如果您使用多个防火墙并且您针对一个防火墙进行身份验证,则可以   不能自动对任何其他防火墙进行身份验证。   不同的防火墙就像不同的安全系统。去做这个   您必须为不同的显式指定相同的防火墙上下文   防火墙。但通常对于大多数应用程序,有一个主防火墙   就够了。
  2.