Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security symfony2使用多个防火墙_Security_Symfony - Fatal编程技术网

Security symfony2使用多个防火墙

Security symfony2使用多个防火墙,security,symfony,Security,Symfony,我想使用两种不同的防火墙,一种用于常规网站访问,另一种用于api:例如,当调用/anything时。。。常规防火墙应该采取行动,但在调用/api时。。。我不想使用其他防火墙,它通过检查请求授权头并从数据库中获取用户来验证用户。 我找到了我想要的:但我想使用多个防火墙。我从示例Authenticator类和UserProvider类复制了代码,并将它们注册为服务,然后在my security.yml中: providers: client_control: entity:

我想使用两种不同的防火墙,一种用于常规网站访问,另一种用于api:例如,当调用/anything时。。。常规防火墙应该采取行动,但在调用/api时。。。我不想使用其他防火墙,它通过检查请求授权头并从数据库中获取用户来验证用户。 我找到了我想要的:但我想使用多个防火墙。我从示例Authenticator类和UserProvider类复制了代码,并将它们注册为服务,然后在my security.yml中:

providers:
    client_control:
        entity: { class: AppBundle:Users }
    api_key_user_provider:
        id: api_key_user_provider

firewalls:
    api:
        pattern: ^/api
        stateless: true
        simple_preauth:
            authenticator: apikey_authenticator

    secured_area:
        remember_me:
            key: "%secret%"
            lifetime: 31536000 # 365 days in seconds
            path: /
            domain: ~ # Defaults to the current domain from $_SERVER
        pattern: ^/
        anonymous: ~
        form_login:
            provider: chain_provider
            csrf_provider: form.csrf_provider
            login_path: login
            check_path: login_check
        logout: ~

遗憾的是,这不起作用,当我试图在/api url下访问路由器时,我被重定向到登录表单。我做错了什么,我能用这种方式实现我想要的吗?

我发现了问题的根源,我的应用程序是多语言的,所以我在编写url模式时就考虑了地区设置

#api firewall
pattern: ^/(lt|en)/api

#secured_area firewall
pattern: ^/(lt|en)
现在它可以工作并重定向到正确的身份验证机制

您可以发布访问控制部分吗?