Я пишу собственный django auth backend, который отправляет почтовый запрос с информацией о имени пользователя и пароле на сервер, а сервер отвечает на некоторые данные о пользователе, если пароль для входа/пароля правильный (403 ответ в противном случае)Пользовательский django auth backend не регистрирует пользователя с базовым окном просмотра
Код работает нормально, создайте пользователя, если он еще не существует, а затем возвращает пользователя (прошедшие модульные тесты). Тем не менее, вид Логин по умолчанию не регистрирует пользователя в
Вот код для внутреннего интерфейса:.
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'
),
Я потратил немало времени на отслеживание причин, по которым пользователь не вошел в систему, без каких-либо успехов.
Есть ли кто-нибудь, кто просветит меня по этому вопросу? Благодаря !
Это сделал трюк, я забыл, что имя пользователя в модели пользователя Джанго не является первичным ключом , Большое спасибо ! – Kirogo