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