gpt4 book ai didi

没有密码的django身份验证

转载 作者:行者123 更新时间:2023-12-03 11:52:47 54 4
gpt4 key购买 nike

我在 django 中使用默认身份验证系统,但我添加了一个 OpenID 库,在那里我可以通过 OpenID 对用户进行身份验证。我想做的是让他们登录,但似乎使用默认的 django 身份验证系统,我需要他们的密码来验证用户身份。有没有办法在不实际使用他们的密码的情况下解决这个问题?

我想做这样的事情......

user = ... # queried the user based on the OpenID response
user = authenticate(user) # function actually requires a username and password
login(user)

我早点离开 authenticate函数,但它附加了一个 backend字段,这是登录所必需的。

最佳答案

为此编写自定义身份验证后端很简单。如果您使用以下内容创建 yourapp/auth_backend.py:

from django.contrib.auth.backends import ModelBackend
from django.contrib.auth.models import User


class PasswordlessAuthBackend(ModelBackend):
"""Log in to Django without providing a password.

"""
def authenticate(self, username=None):
try:
return User.objects.get(username=username)
except User.DoesNotExist:
return None

def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None

然后添加到您的settings.py:
AUTHENTICATION_BACKENDS = (
# ... your other backends
'yourapp.auth_backend.PasswordlessAuthBackend',
)

在您看来,您现在可以在没有密码的情况下调用身份验证:
user = authenticate(username=user.username)
login(request, user)

关于没有密码的django身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6560182/

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