2010-09-22 114 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

相关问题