Api Symfony2如何使用两种不同的方法对两个不同防火墙上的用户进行身份验证?

Api Symfony2如何使用两种不同的方法对两个不同防火墙上的用户进行身份验证?,api,symfony,Api,Symfony,我有两个防火墙,一个用于我的API调用(WSSE安全),一个用于我的应用程序。两者都很好,但我需要在api防火墙上对用户进行身份验证,同时在应用程序防火墙上进行身份验证,但我不能这样做 我的安全 firewalls: # Firewall for the api wsse_secured: pattern: ^/api/.* wsse: nonce_dir: null lifetime: 300

我有两个防火墙,一个用于我的API调用(WSSE安全),一个用于我的应用程序。两者都很好,但我需要在api防火墙上对用户进行身份验证,同时在应用程序防火墙上进行身份验证,但我不能这样做

我的安全

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>