Menerapkan Autentikasi dan Otorisasi Pengguna di Django
Autentikasi pengguna memastikan bahwa pengguna dapat masuk dan mengakses akun mereka dengan aman. Di sisi lain, otorisasi menentukan tindakan apa yang boleh dilakukan oleh pengguna yang diautentikasi. Django menyediakan sistem autentikasi tangguh yang mudah diintegrasikan dan diperluas untuk tujuan ini.
Menyiapkan Sistem Autentikasi Default
Sistem autentikasi bawaan Django disertakan dalam konfigurasinya secara default. Pastikan aplikasi berikut tercantum di bagian INSTALLED_APPS
dari settings.py
Anda:
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
Migrasikan database untuk menyiapkan tabel yang diperlukan:
python manage.py migrate
Membuat Model Pengguna
Django menyediakan model pengguna bawaan, tetapi Anda dapat membuat model khusus jika diperlukan. Untuk menggunakan model default:
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()
Untuk membuat model pengguna khusus, ubah models.py
Anda:
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)
Perbarui pengaturan AUTH_USER_MODEL
di settings.py
:
AUTH_USER_MODEL = 'yourapp.CustomUser'
Menangani Login dan Logout Pengguna
Django menyediakan tampilan bawaan untuk login dan logout. Tambahkan URL berikut ke urls.py
Anda:
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'),
]
Buat templat login sederhana bernama registration/login.html
:
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Log in</button>
</form>
Membatasi Akses dengan Izin
Django menyediakan kelas izin untuk membatasi akses. Untuk menggunakannya dalam tampilan:
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')
Izin dapat diberikan menggunakan admin Django atau melalui shell:
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)
Kesimpulan
Sistem autentikasi dan otorisasi Django menyediakan fondasi yang kuat untuk mengamankan aplikasi web Anda. Sistem ini sangat dapat disesuaikan, sehingga Anda dapat memperluas fungsionalitasnya untuk memenuhi persyaratan tertentu. Dengan sistem ini, Anda dapat mengelola akun pengguna, peran, dan izin dalam proyek Anda dengan mudah.