Link Search Menu Expand Document

Авторизация

Авторизацию разделяют на два этапа:

  1. Аутентификация – проверка есть ли такой пользователь с введенным логинои и паролем
  2. Авторизация – предоставление пользователю доступа к ресурсам

Подробнее про использование системы аутентификации пользователея

В файле forms.py создаем функцию аутентификации:

from django.contrib.auth.forms import AuthenticationForm
class UserLoginForm(AuthenticationForm):
    username = forms.CharField(label='Имя пользователя',
                               widget=forms.TextInput(attrs={'class': "form-control", 'autocomplete': 'off'}))
    password = forms.CharField(label='Пароль', widget=forms.PasswordInput(attrs={'class': "form-control"}))

Далее в views.py подключаем эту функцию

from django.contrib.auth import login, logout
def user_login(request):
    if request.method == 'POST':
        form = UserLoginForm(data=request.POST)  # В данном случае писать 'data=' обязательно
        if form.is_valid():
            user = form.get_user()
            login(request,user)
            return redirect('home')
    else:
        form = UserLoginForm()

    return render(request, 'news/login.html', {'form':form})

После этого мы можем сделать регистрацию пользователя немного удобнее – автоматически авторизовать пользователя после регистрации. Делается это путем замены form.save() на:

user = form.save()
login(request, user)

Logout

Пропишем маршрут в urls.py:

path('logout/', user_logout, name='logout'),

Пропишем функцию в views.py:

def user_logout(request):
    logout(request)
    return redirect('login')