0
我正在写一个自定义django身份验证后端发送只有用户名和密码信息的发布请求到服务器,服务器回复关于用户的一些数据,如果登录/密码对是正确的(403响应,否则)自定义django身份验证后端不记录基本登录视图的用户
代码工作正常,创建用户,如果它不存在,然后返回用户(通过的单元测试)。但是,默认登录视图不记录用户在
下面是后端代码:
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
并呼吁登录视图(自定义窗体仅仅是有形式的占位符) :
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'
),
我已经花了很多时间相当追查为什么用户没有登录,没有任何成功。
有没有人在这个问题上给我启发?谢谢 !
这奏效了,我忘了,在Django的用户模型中的用户名是不是主键。非常感谢 ! – Kirogo