我解释一下。我有2个内核:AdminKernel
和ApiKernel
。
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,否则使用它,否则显示身份验证框?
答案 0 :(得分:0)
来自Symfony2文档:
http://symfony.com/doc/current/book/security.html
- 多个防火墙不共享安全上下文如果您使用多个防火墙并且您针对一个防火墙进行身份验证,则可以 不能自动对任何其他防火墙进行身份验证。 不同的防火墙就像不同的安全系统。去做这个 您必须为不同的显式指定相同的防火墙上下文 防火墙。但通常对于大多数应用程序,有一个主防火墙 就够了。
醇>