我有一个使用活动目录对用户进行身份验证的应用程序。这意味着无需在我们的应用程序数据库中存储密码。我们将每个用户的详细信息(例如用户名等)存储在应用程序数据库的用户表中。
我正在努力实现允许用户添加到应用程序的功能。我正在使用ModelForm
生成表单。
模型形式如下:
class GeminiUserAccessForm(ModelForm):
class Meta:
model = GeminiUser
fields = ['email', 'is_authorised']
labels = {
'is_authorised': 'Is authorised?'
}
视图中用于处理来自表单页面的请求的方法:
def manage_user_access_view(request):
template_name = 'gemini_users/manage_access.html'
if request.method == 'POST':
form = GeminiUserAccessForm(request.POST)
if form.is_valid():
new_user = form.save()
pass
else:
form = GeminiUserAccessForm()
return render(request, template_name, {'form': form})
一切正常,具有给定电子邮件地址和授权值的用户将保存到数据库中。密码为空。
在保存用户之前,我还需要使用set_unusable_password()
吗?
答案 0 :(得分:0)
这是一种很好的形式,并且具有深度安全性,以防万一有人出于某种原因启用了在password
字段中查看的身份验证。
set_unusable_password()
调用make_password(None)
,并返回
UNUSABLE_PASSWORD_PREFIX + get_random_string(UNUSABLE_PASSWORD_SUFFIX_LENGTH)
password is None
时,即密码散列永远不会被任何现成的散列算法视为有效。