2012-07-05 50 views
2

是否可以在Symfony2中通過用戶名或IP進行身份驗證? 我知道可以使用用戶名和密碼或通過IP地址登錄,但是當我來自特定IP地址時,也可以自動進行身份驗證,如果不是則通過用戶名和密碼進行身份驗證?Symfony2:通過用戶或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 } 

謝謝你的hel p!

回答

2

我不認爲在Symfony中這是可能的。由於IP地址可能是僞造的,這是一個相當嚴重的安全漏洞。這就是爲什麼我會建議你搜索另一種登錄方法。

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

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

而是通過IP授權的,爲什麼不提供可以用於對用戶進行身份驗證的證書?這樣,傳入的請求需要一些不公開的知識(證書)?

+0

爲什麼它如此不安全,因爲僞造IP地址的攻擊者不會得到任何迴應? – Patrick