gpt4 book ai didi

django - 在 Django 中添加身份验证

转载 作者:行者123 更新时间:2023-12-03 03:42:06 25 4
gpt4 key购买 nike

我有一个 django 应用程序,我想添加自己的身份验证验证并检查用户是否已过期(检查我的某些模型的过期日期)。如果用户过期,我想在登录页面中引发 ValidationError 并提供适当的消息。最好的方法是什么?

谢谢,亚历克斯

最佳答案

如果您真的想进行自己的自定义身份验证,您应该阅读 custom backends在 Django 文档中。

不过,您可能不想自己做。太糟糕了。真的。除非有非常充分的理由,否则您应该避免自己进行身份验证。主要原因是,如果您不使用内置的用户模型,许多 Django 应用程序将停止工作。如果您需要针对现有源进行身份验证,那么这是创建您自己的后端的充分理由。但也存在一些陷阱,您可能仍然希望为自定义后端使用内置的用户模型。

您应该告诉我们为什么您想要进行自己的自定义身份验证,也许我们可以帮助您实现您的要求,而无需编写自定义后端。

编辑

好的,我想我现在明白你的意思了。 (我认为)您想要的是自定义身份验证表单。我们目前使用自定义表单(尽管我们有不同的不可避免的后端),因此您应该能够非常轻松地使用以下内容。

from django.contrib.auth.forms import AuthenticationForm
from django import forms
from myproject.myapp.models import MyClass

class CustomAuthForm(AuthenticationForm):

def clean(self):
cleaned_data = super(CustomAuthForm, self).clean()
user = self.user_cache # set by super class
if user.my_class.expired:
raise forms.ValidationError('This User has Expired!')
return cleaned_data

然后,要使用此自定义身份验证表单,您的 urls.py 中需要一个 URL:

from myproject.myapp.forms import CustomAuthForm

url(r'^login/$', 'django.contrib.auth.views.login', name='login',
kwargs={'template_name':'youproject/login.html', 'authentication_form':CustomAuthForm}),

我现在看到您的问题最初表示您想要自定义验证,而不是身份验证。对于没有正确阅读您的问题,我深表歉意。

关于django - 在 Django 中添加身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5610690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com