django axes modelbackend需要';请求';鉴定
在我的应用程序中,我有一个使用django custom user的自定义用户模型,我也使用allauth。Django axes在admin和allauth上注册每次登录尝试,但我在用户登录时遇到问题 登录视图:django axes modelbackend需要';请求';鉴定,django,security,django-models,django-views,django-login,Django,Security,Django Models,Django Views,Django Login,在我的应用程序中,我有一个使用django custom user的自定义用户模型,我也使用allauth。Django axes在admin和allauth上注册每次登录尝试,但我在用户登录时遇到问题 登录视图: def user_login(request): data = dict() if request.user.is_authenticated: return redirect('frontend:dashboard') if reques
def user_login(request):
data = dict()
if request.user.is_authenticated:
return redirect('frontend:dashboard')
if request.method == "POST":
form = LoginForm(request.POST)
if form.is_valid():
email = form.cleaned_data['email']
password = form.cleaned_data['password']
if user is not None:
user = authenticate(email=email, password=password)
if user.is_active:
login(request, user)
user_logged_in.send(sender=CustomUser, request=request, user=user)
return redirect('frontend:dashboard')
else:
messages.error(request, _('Incorrect email or password.'))
user_login_failed.send(sender=CustomUser, request=request, credentials={'username': form.cleaned_data.get('email')})
else:
messages.error(request, _('Incorrect email or password.'))
user_login_failed.send(sender=CustomUser, request=request, credentials={'username': form.cleaned_data.get('email')})
return redirect('auth:login')
else:
form = LoginForm()
data['form'] = form
return render(request, os.path.join(settings.AUTH_TEMPLATE, 'login.html'), data)
当我尝试登录时,出现以下错误:
axes.backends.AxesModelBackend.RequestParameterRequired: DjangoAxesModelBackend requires calls to authenticate to pass `request`
django axes文档有点混乱,我不明白在解决这个问题时必须做些什么
我必须指出,只有在我将axes.backends.AxesModelBackend
添加到身份验证\u backends
时,才会出现此错误,这是强制性的。对于我来说:
form = AuthenticationForm(data=request.POST, request=request)
user = authenticate(username=username, password=password, request=request)
此外,对登录视图使用decorator
from axes.decorators import axes_dispatch
@axes_dispatch
这就是解决办法。也许这对你也有帮助
致意