在Django中将某些用户帐户限制为某些IP
在使用特定IP地址时,是否可以只允许用户登录?这个IP地址对于所有用户都是不同的,所以简单地在Apache中编写htaccess规则并不能解决我的问题。我还研究了编写一个自定义身份验证后端,但我看不到任何方法可以检查用户的当前IP地址,因为没有提供请求变量 拥有这个特性并不是绝对重要的,但它可能很好。我只需要看看是否有可能不严重破坏Django的身份验证框架 谢谢,在Django中将某些用户帐户限制为某些IP,django,authentication,ip-address,Django,Authentication,Ip Address,在使用特定IP地址时,是否可以只允许用户登录?这个IP地址对于所有用户都是不同的,所以简单地在Apache中编写htaccess规则并不能解决我的问题。我还研究了编写一个自定义身份验证后端,但我看不到任何方法可以检查用户的当前IP地址,因为没有提供请求变量 拥有这个特性并不是绝对重要的,但它可能很好。我只需要看看是否有可能不严重破坏Django的身份验证框架 谢谢, 其实很简单 创建一个自定义身份验证后端,该后端将IP地址作为参数(如果您需要更多的IP地址进行身份验证,还可以创建其他参数) 创建
其实很简单
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
其实很简单
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
谢谢你的回答。我太习惯使用内置的登录视图了,我没有意识到这是可能的。谢谢你的回答。我太习惯于使用内置的登录视图,我没有意识到这是一种可能性。