Symfony2对所有人的IP限制

Tam*_*Tam 4 ip symfony

我正在尝试对Symfony2中的特定路由应用IP限制,如Symfony2上所述.我没有用户身份验证,我只希望我的服务能够回答来自特定IP的请求.

但我没有成功应用限制(我总是在测试期间通过).

这是我的security.yml

jms_security_extra:
    secure_all_services: false
    expressions: true

security:
    encoders:
            Symfony\Component\Security\Core\User\User: plaintext

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
        in_memory:
            memory:
                users:
                   user:  { password: userpass, roles: [ 'ROLE_USER' ] }
                   admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }

    firewalls:
        secured_area:
            pattern: ^/wsoa/tests
            anonymous: ~
            # http_basic:
                # realm: "Secured Demo Area"

    access_control:
        #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
        #- { path: ^/_internal/secure, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
        # THE RESTRICTION I'D LIKE (FOR EXEMPLE 127.0.0.1)
        - { path: ^/wsoa_products_tests, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
Run Code Online (Sandbox Code Playgroud)

这是我从routing.yml的路线:

wsoa_products_tests:
    pattern:  /wsoa/tests
    defaults: { _controller: WsoaProductsBundle:Test:display }
Run Code Online (Sandbox Code Playgroud)

谁知道如何让它有效?我是否应该忘记在Symfony2中执行此操作并使用htaccess执行此操作?

小智 5

要将路径限制为仅限特定IP,可以将以下内容添加到security.ymlaccess_control:

- { path: ^/yourpath, roles: IS_AUTHENTICATED_ANONYMOUSLY, ips: [1.1.1.1, 2.2.2.2, ...]  }
- { path: ^/yourpath, roles: ROLE_NO_ACCESS }
Run Code Online (Sandbox Code Playgroud)

如果您想限制为全范围的IP,请使用IP网络掩码,如下所示:

- { path: ^/yourpath, roles: IS_AUTHENTICATED_ANONYMOUSLY, ips: [1.1.1.0/24]  }
- { path: ^/yourpath, roles: ROLE_NO_ACCESS }
Run Code Online (Sandbox Code Playgroud)

注意:我放在这里的IP地址需要替换为您想要限制的IP地址.也替换^/yourpath为您的实际路径或子路径.