Как должен быть реализован вид входа в систему CustomUser - PullRequest
0 голосов
/ 09 января 2020

У меня есть пользовательская модель пользователя MyUser

class MyUser(AbstractBaseUser):                                   
        email = models.EmailField(_('email adress'),unique=True)

Я создал форму входа CustomAuthenticationForm, которая наследуется от встроенной AuthenticationForm

from django import forms                                    
from django.contrib.auth.forms import AuthenticationForm                                 
from .models import MyUser

class CustomAuthenticationForm(AuthenticationForm):
class Meta:
    model = MyUser
    fields = ('email',)

Теперь я хочу создать вход в систему, где я могу проверить введенные учетные данные пользователя и аутентифицировать пользователя. Чтобы выполнить эту задачу, я немного смутился из-за непонимания, как правильно это сделать.

def login(request):                                            
      if request.method == 'POST':
           form = CustomAuthenticationForm(request.POST)
          if form.is_valid():
             email = form.cleaned_data['email']
             password = form.cleaned_data['password']

            #how to check that user inputed    
            #data is valid. Is AuthenticationForm have any method to check password validness

             user = authenticate(email=email,password=password)
      else:
          form = CustomAuthenticationForm()                       
     return render(request,'registration/loginn.html',{'form':form})

Вот мой вопрос: во встроенном AuthenticationForm есть какой-либо метод, обеспечивающий функциональность для проверки правильности пароля пользователя. Если нет, никто не может предложить какое-либо подходящее решение для проверки пароля, чем аутентифицировать пользователя

1 Ответ

0 голосов
/ 09 января 2020

Прежде всего, когда вы создаете пользовательского пользователя в django, вы также должны указать это в настройках, переопределив AUTH_USER_MODEL. Предположим, ваша новая пользовательская модель находится в приложении users, затем в настройках

AUTH_USER_MODEL = users.MyUser

И затем везде, где вам нужна ваша пользовательская модель, попробуйте импортировать ее следующим образом

from django.contrib.auth import get_user_model

User = get_user_model()

Сейчас идет Возвращаясь к вашему вопросу, django имеет несколько проверок пароля, вы можете добавить или удалить их в файле настроек или даже ввести пользовательские. Проверьте документацию для этого.

...