我有一个symfony应用程序,该应用程序在Sonata Admin Bundle中具有用于管理部分的功能,它具有自己的防火墙(admin
)和用于应用程序的用户部分的防火墙(main
)。 / p>
目前,与Sonata连接的管理员无法访问为该用户设计的API,因为它已针对Sonata Admin Bundle身份验证器进行了身份验证,对于该API,它将其视为空用户或未通过身份验证一。
我想允许管理员访问为用户部分防火墙后面的应用程序部分制作的API。
在security.yaml
文件中配置防火墙:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
admin:
pattern: ^/admin(.*)
form_login:
provider: app_user_admin
login_path: admin_login
use_forward: false
check_path: admin_login
failure_path: null
logout:
path: admin_logout
target: admin_login
anonymous: true
guard:
authenticators:
- App\Security\AdminLoginAuthenticator
main:
anonymous: true
logout:
path: security_logout
guard:
authenticators:
- App\Security\UserLoginAuthenticator
是否可以为管理员连接两个身份验证器?就像,成功登录后,管理员可以调用main
防火墙的身份验证器吗?
答案 0 :(得分:0)
经过一番挖掘和一些帮助,我发现symfony安全具有内置的类似功能。
它叫Symfony context,并且做的完全一样。
这是您真正需要添加到配置文件中的内容,以供将来参考:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
admin:
context: just_a_random_name
pattern: ^/admin(.*)
form_login:
provider: app_user_admin
login_path: admin_login
use_forward: false
check_path: admin_login
failure_path: null
logout:
path: admin_logout
target: admin_login
anonymous: true
guard:
authenticators:
- App\Security\AdminLoginAuthenticator
main:
context: just_a_random_name
anonymous: true
logout:
path: security_logout
guard:
authenticators:
- App\Security\UserLoginAuthenticator