Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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
Php symfony2 API身份验证和路由_Php_Url Routing_Symfony_Firewall - Fatal编程技术网

Php symfony2 API身份验证和路由

Php symfony2 API身份验证和路由,php,url-routing,symfony,firewall,Php,Url Routing,Symfony,Firewall,我按照说明创建自定义身份验证提供程序: app/config/security: firewalls: wsse_protection: pattern: ^/api/.* wsse: true main: pattern: ^/ form_login: provider: fos_userbundle logout: true anonymous:

我按照说明创建自定义身份验证提供程序:

app/config/security

firewalls:
    wsse_protection:
        pattern: ^/api/.*
        wsse: true
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
        logout:       true
        anonymous:    true
example_list:
    pattern: /example/list
    defaults: { ... }
现在,我在控制器中使用路由执行一些操作。e、 g:

带有listAction的示例控制器

路由

firewalls:
    wsse_protection:
        pattern: ^/api/.*
        wsse: true
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
        logout:       true
        anonymous:    true
example_list:
    pattern: /example/list
    defaults: { ... }

我是否必须将所有路由复制到示例api列表?因为api/example/list不起作用(找不到/api/example/list的路由)。我认为来自防火墙的模式是所有已定义路由的前缀。

防火墙不是前缀,而是与传入路由匹配的正则表达式。在这种情况下,任何以
/api
开头的内容都将与您的
wsse_保护
防火墙相匹配,所有通过的内容都将与您的
main
防火墙相匹配


要在/api/*下创建路由,必须单独定义路由。

ok。谢谢同时,我在保护控制器方法方面遇到了一些问题。添加@Secure(roles=“ROLE\u ADMIN”)注释将导致重播attac。你知道如何解决这个问题,或者原因是什么吗?这与$this->get('security.context')->isgrated('ROLE\u ADMIN')或security.yml中ROLE\u ADMIN的访问控制相同。