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.