Реалізація автентифікації та авторизації користувачів у Django
Автентифікація користувачів гарантує, що користувачі можуть безпечно входити в систему та отримувати доступ до своїх облікових записів. Авторизація, з іншого боку, визначає, які дії дозволено виконувати автентифікованим користувачам. Django надає надійну систему автентифікації, яку легко інтегрувати та розширити для цих цілей.
Налаштування системи автентифікації за замовчуванням
Стандартна система автентифікації Django включена в конфігурацію за замовчуванням. Переконайтеся, що в розділі INSTALLED_APPS
вашого settings.py
указано такі програми:
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
Перенесіть базу даних, щоб налаштувати необхідні таблиці:
python manage.py migrate
Створення моделі користувача
Django надає вбудовану модель користувача, але за потреби ви можете створити власну. Щоб використовувати модель за замовчуванням:
from django.contrib.auth.models import User
# Creating a new user
user = User.objects.create_user(username='johndoe', password='securepassword')
user.email = 'johndoe@example.com'
user.save()
Щоб створити власну модель користувача, змініть models.py
:
from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):
phone_number = models.CharField(max_length=15, blank=True, null=True)
Оновіть налаштування AUTH_USER_MODEL
у settings.py
:
AUTH_USER_MODEL = 'yourapp.CustomUser'
Обробка входу та виходу користувача
Django надає вбудовані представлення для входу та виходу. Додайте такі URL-адреси до urls.py
:
from django.urls import path
from django.contrib.auth import views as auth_views
urlpatterns = [
path('login/', auth_views.LoginView.as_view(), name='login'),
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
]
Створіть простий шаблон входу під назвою registration/login.html
:
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Log in</button>
</form>
Обмеження доступу за допомогою дозволів
Django надає класи дозволів для обмеження доступу. Щоб використовувати їх у представленнях:
from django.contrib.auth.decorators import login_required, permission_required
@login_required
def dashboard(request):
return render(request, 'dashboard.html')
@permission_required('yourapp.can_edit')
def edit_page(request):
return render(request, 'edit_page.html')
Дозволи можна призначити за допомогою адміністратора Django або через оболонку:
from django.contrib.auth.models import User, Permission
user = User.objects.get(username='johndoe')
permission = Permission.objects.get(codename='can_edit')
user.user_permissions.add(permission)
Висновок
Система автентифікації та авторизації Django забезпечує міцну основу для захисту ваших веб-додатків. Він має широкі можливості налаштування, що дозволяє розширити його функціональність відповідно до конкретних вимог. За допомогою цієї системи ви можете легко керувати обліковими записами користувачів, ролями та дозволами у своїх проектах.