是否可以通过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 }
感谢您的帮助!
答案 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表单身份验证提供程序。