我有两个防火墙,一个用于我的API调用(WSSE安全),一个用于我的应用程序。两者都运行良好,但我需要在api防火墙上对用户进行身份验证,同时在应用程序防火墙上进行身份验证,我不能这样做。
我的security.yml
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
我已经阅读过其他帖子(this question,this one和this one),正如您所看到的,添加上下文在我的情况下不起作用。
我尝试手动添加我需要的wsse标头,或者为我的用户创建一个新的WsseToken,但没有成功。
我真的需要帮助解决这个问题,这个问题必须是常见的......
答案 0 :(得分:0)
据我了解,您希望重复使用API中的操作以供用户访问。如果没有,请提供更多详细信息。
最好的办法就是在不同的防火墙下为同一个动作制作另一条路线。
假设你有:
<route id="api_form_validate" pattern="/api/validate-form">
<default key="_controller">Bundle:ApiController:validateForm</default>
</route>
添加:
<route id="user_form_validate" pattern="/user/validate-form">
<default key="_controller">Bundle:ApiController:validateForm</default>
</route>
将表单操作从api_form_validate
更改为user_form_validate
。