gpt4 book ai didi

python - 自定义 django auth 后端不使用基本登录 View 记录用户

转载 作者:太空宇宙 更新时间:2023-11-03 16:35:30 25 4
gpt4 key购买 nike

我正在编写一个自定义的 django auth 后端,它将仅包含用户名和密码信息的 post 请求发送到服务器,如果登录/密码对正确,服务器会回复一些有关用户的数据(否则为 403 响应)

代码工作正常,如果用户尚不存在,则创建用户,然后返回用户(进行的单元测试正在通过)。但是,默认登录 View 不会让用户登录。
这是后端的代码:

from django.contrib.auth import get_user_model
import requests

User = get_user_model()


class CustomAuthBackend():
def authenticate(self, username, password):
response = requests.post(
LOGIN_SERVER_URL,
data={'username': username, 'password': password}
)
if response.status_code == 200:
try:
return User.objects.get(username=username)
except User.DoesNotExist:
user = User.objects.create_user(
username=username,
password=password
)
user_data = response.json()['user']
user.last_name = user_data['last_name']
user.first_name = user_data['first_name']
user.email = user_data['email']
user.save()
return user

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

以及登录 View 的调用(自定义表单只是为了在表单上有占位符):

from django.conf.urls import url
from django.contrib.auth.views import logout, login
from accounts.forms import CustomAuthenticationForm

url(
r'^login$',
login,
{
'template_name': 'login.html',
'authentication_form': CustomAuthenticationForm
},
name='login'
),

我花了相当多的时间来追踪用户未登录的原因,但没有成功。
有没有人可以启发我解决这个问题?谢谢!

最佳答案

根据the docsget_user 方法应将模型的主键作为参数:

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

关于python - 自定义 django auth 后端不使用基本登录 View 记录用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37255886/

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