2010-09-22 80 views
0

是否可以讓用戶在使用特定IP地址時登錄?這個IP地址對於所有用戶來說都是不同的,所以在Apache中編寫htaccess規則並不能解決我的問題。我還考慮編寫一個自定義身份驗證後端,但我沒有看到任何方式我可以檢查用戶的當前IP地址,因爲沒有請求變量提供。將某些用戶帳戶限制在Django中的某些IP地址

擁有此功能並非絕對重要,但它可能很好。我只需要看看是否有可能在不嚴重破解Django的身份驗證框架的情況下進行。

感謝, 科裏

回答

4

這是很簡單的實際。

  1. 創建一個自定義身份驗證後端,該身份驗證後端將IP地址作爲參數(以及其他人,如果您想更多地進行身份驗證)。
  2. 創建定製的認證視圖的視圖的

實施例:在auth後端的

from django.contrib.auth import authenticate, login 

def login(request): 
    user = authenticate(ip=request.META['REMOTE_ADDR']) 
    if user is not None: 
     login(request, user) 
     # Redirect to a success page. 
    else: 
     # Return an 'invalid login' error message. 

實施例:

class IPAuthBackend: 
    def authenticate(self, ip=None): 
     try: 
      return SomeModel.objects.get(ip=ip).user 
     except SomeModel.DoesNotExist: 
      pass 
+0

感謝您的回答。我太習慣於使用內置的登錄視圖,我沒有意識到這是一種可能性。 – 2010-09-22 00:50:33

相關問題