Symfony2:通过用户或IP登录

时间:2012-07-05 07:56:44

标签: authentication login symfony

是否可以通过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 }

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

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

如果您想了解更多相关信息:

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

为什么不提供可用于验证用户身份的证书,而不是通过IP授权?这样,传入的请求需要一些不公开的知识(证书)?

答案 1 :(得分:2)

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

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

您必须链接自定义提供程序和Symfony2表单身份验证提供程序。