2

是否可以通过 Symfony2 中的用户名或 IP 进行身份验证?我知道可以使用用户名和密码或通过 IP 地址登录,但是当我来自特定 IP 地址时是否也可以自动进行身份验证,如果不是,则通过用户名和密码进行身份验证?

例子:

如果我来自 10.1.1.1,我想获得 ADMIN_ROLE

如果我来自不同的 IP,我必须通过用户名和密码登录

我的security.yml来了

        secured_area:
        pattern:    ^/
        anonymous: ~
        form_login:
            check_path: /login_check
            login_path: /login
        logout:
            path:   /logout
            target: /login
        #anonymous: ~
        #http_basic:
        #    realm: "Secured Demo Area"

access_control:
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/, roles: ROLE_ADMIN  }
    - { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 10.1.1.1 }

感谢帮助!

4

2 回答 2

2

我认为这在 Symfony 中是不可能的。这是一个相当大的安全漏洞,因为 IP 地址可以被伪造。这就是为什么我建议您搜索另一种登录方法。

如果您想了解更多信息:

http://en.wikipedia.org/wiki/IP_address_spoofing

与其通过 IP 授权,不如提供一个可以用来认证用户的证书?这样传入的请求需要一些不公开的知识(证书)吗?

于 2012-07-05T09:18:47.903 回答
2

这是可能的,但不安全。您可以执行链式身份验证提供程序(security.yml 中的防火墙部分)

在您的情况下,您将需要为 IP 身份验证方法实施自定义方法。您可以在 Symfony 食谱中找到编写自定义身份验证提供程序的文档(需要:http ://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html )

您将不得不链接您的自定义提供程序和 Symfony2 表单身份验证提供程序。

于 2012-07-06T06:30:02.973 回答