Авторизация
Авторизацию разделяют на два этапа:
- Аутентификация – проверка есть ли такой пользователь с введенным логинои и паролем
- Авторизация – предоставление пользователю доступа к ресурсам
Подробнее про использование системы аутентификации пользователея
В файле 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')