首页 > 解决方案 > 我无法使用我使用的方法登录,我曾尝试使用身份验证方法,但它不起作用有人能指出我正确的方向吗

问题描述

def index(request):
#check if username and password POST requests exits (user submitted form)
if request.method == 'POST':
    username = request.POST['username']
    password = request.POST['password']

    user = auth.authenticate(request,username=username, password=password)

    if user is not None:
        auth.login(request, user)
        return redirect('home')
    else:
        messages.info(request, "invalid credentials")
        return redirect('index')
else:
    return render(request, 'index.html')

这是我的代码我什至尝试只使用没有身份验证但结果相同的身份验证

标签: djangoauthenticationview

解决方案


通常 Djangoauthenticate会检查密码的散列版本是否与存储的密码匹配。因此,您不能以原始方式保存密码。

因此,AbstractBaseUser该类提供了一个set_password(…)方法 [Django-doc],它将密码设置为密码的散列形式。

因此,您可以将其实现为:

    # …
    else:
        user.set_password(user.password)
        user.save()
        messages.info(request,"Registered Successfully")

此外,我强烈建议使用 a Form(或 a ModelForm)来验证输入数据。这实际上是 a 的主要任务Form:验证和清理输入,并删除大量关于验证错误消息、清理和保存对象的样板代码。


推荐阅读