Django'da Kullanıcı Kimlik Doğrulaması ve Yetkilendirmeyi Uygulama
Kullanıcı kimlik doğrulaması, kullanıcıların güvenli bir şekilde oturum açıp hesaplarına erişebilmelerini sağlar. Öte yandan yetkilendirme, kimliği doğrulanmış kullanıcıların hangi eylemleri gerçekleştirmelerine izin verildiğini belirler. Django, bu amaçlar için entegre edilmesi ve genişletilmesi kolay, sağlam bir kimlik doğrulama sistemi sağlar.
Varsayılan Kimlik Doğrulama Sisteminin Ayarlanması
Django'nun varsayılan kimlik doğrulama sistemi varsayılan olarak yapılandırmasına dahildir. Aşağıdaki uygulamaların settings.py
: dosyanızın INSTALLED_APPS
bölümünde listelendiğinden emin olun
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
Gerekli tabloları kurmak için veritabanını taşıyın:
python manage.py migrate
Bir Kullanıcı Modeli Oluşturma
Django yerleşik bir kullanıcı modeli sağlar, ancak gerekirse özel bir tane oluşturabilirsiniz. Varsayılan modeli kullanmak için:
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()
Özel bir kullanıcı modeli oluşturmak için models.py
: dosyanızı değiştirin
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)
settings.py
dosyasındaki AUTH_USER_MODEL
ayarını güncelleyin:
AUTH_USER_MODEL = 'yourapp.CustomUser'
Kullanıcı Girişi ve Çıkışının Yönetilmesi
Django, oturum açma ve oturum kapatma için yerleşik görünümler sağlar. Aşağıdaki URL'leri urls.py
:'nıza ekleyin
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
: adında basit bir giriş şablonu oluşturun:
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Log in</button>
</form>
İzinlerle Erişimi Kısıtlama
Django erişimi kısıtlamak için izin sınıfları sağlar. Bunları görünümlerde kullanmak için:
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')
İzinler Django admin kullanılarak veya kabuk aracılığıyla atanabilir:
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)
Çözüm
Django'nun kimlik doğrulama ve yetkilendirme sistemi, web uygulamalarınızı güvence altına almak için sağlam bir temel sağlar. Son derece özelleştirilebilirdir ve belirli gereksinimleri karşılamak için işlevselliğini genişletmenize olanak tanır. Bu sistemle, projelerinizdeki kullanıcı hesaplarını, rolleri ve izinleri kolayca yönetebilirsiniz.