Api Symfony2如何使用两种不同的方法对两个不同防火墙上的用户进行身份验证?
我有两个防火墙,一个用于我的API调用(WSSE安全),一个用于我的应用程序。两者都很好,但我需要在api防火墙上对用户进行身份验证,同时在应用程序防火墙上进行身份验证,但我不能这样做 我的安全Api Symfony2如何使用两种不同的方法对两个不同防火墙上的用户进行身份验证?,api,symfony,Api,Symfony,我有两个防火墙,一个用于我的API调用(WSSE安全),一个用于我的应用程序。两者都很好,但我需要在api防火墙上对用户进行身份验证,同时在应用程序防火墙上进行身份验证,但我不能这样做 我的安全 firewalls: # Firewall for the api wsse_secured: pattern: ^/api/.* wsse: nonce_dir: null lifetime: 300
firewalls:
# Firewall for the api
wsse_secured:
pattern: ^/api/.*
wsse:
nonce_dir: null
lifetime: 300
provider: fos_userbundle
context: user
# Firewall for the application
main:
pattern: /.*
form_login:
provider: fos_userbundle
login_path: fos_user_security_login
check_path: fos_user_security_check
default_target_path: espace_perso
always_use_default_target_path: false
failure_path: fos_user_security_login
logout:
path: fos_user_security_logout
target: fos_user_security_login
oauth:
resource_owners:
facebook: "/login/check-facebook"
linkedin: "/login/check-linkedin"
google: "/login/check-google"
login_path: fos_user_security_login
oauth_user_provider:
service: bg.oauth.user_provider
anonymous: true
context: user
我已经阅读了其他帖子(,和),如你所见,添加上下文在我的案例中不起作用
我尝试手动添加所需的wsse头,或者使用事件为我的用户创建一个新的WsseToken,但没有成功
我真的需要帮助解决这个问题,这个问题必须是常见的…据我所知,您希望重用API中的操作以供用户访问。如果没有,请提供更多细节 最好的办法是为同一个操作创建另一条路由,就在不同的防火墙下 假设你有:
<route id="api_form_validate" pattern="/api/validate-form">
<default key="_controller">Bundle:ApiController:validateForm</default>
</route>
Bundle:ApiController:validateForm
加:
Bundle:ApiController:validateForm
并将表单操作从
api\u form\u validate
更改为user\u form\u validate
Wsse通过HTTP头管理,表单通过cookie登录。您试图如何访问API?正如您所说,我是通过HTTP头访问API的。例如,我在我的“主”防火墙后面有一个表单,但此表单的操作在我的“wsse_安全”防火墙后面。因此,当我单击“验证”时,“wsse_安全”防火墙会向我发送403,因为我没有在此防火墙上进行身份验证。是的,这是我拥有的解决方案,但我不希望有多个重复路由。我改变了我的身份验证方法,所以现在这是好的。谢谢你的回答:)
<route id="user_form_validate" pattern="/user/validate-form">
<default key="_controller">Bundle:ApiController:validateForm</default>
</route>