Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan Django REST Framework'de izin sistemleri (permissions) konulu bir eğitim içeriğidir.
- Video, Django REST Framework'de API'lerin güvenliğini artırmak için izin sistemlerinin nasıl kullanılacağını göstermektedir. Eğitmen, kitap projesi üzerinden giriş yapmış kullanıcıların sadece görüntüleme izni alması, belirli kullanıcı gruplarına göre yazma yetkilerinin kısıtlanması ve global izin sınıflarının (AllowAny, IsAuthenticated, IsAdminUser, IsReadOnly) kullanımı gibi örnekler vermektedir.
- Eğitim, settings.py dosyasına "is authenticated" izni ekleyerek tüm API endpoint'ları için global bir politika belirleme, login-logout işlemleri ve izin sınıflarının kullanımını göstermektedir. Ayrıca, admin olarak giriş yaparak tüm izinleri kullanabildiğini ve global izin sınıfını iptal ederek tüm endpoint'ların herkese açık hale geldiğini ve bu durumun güvenlik açısından tehlikeli olabileceğini vurgulamaktadır. Video, önümüzdeki iki videoda izin sistemlerinin daha detaylı işleneceğini belirterek devam edeceğini ifade etmektedir.
- 00:02Django REST Framework'de İzin Sistemi
- Önümüzdeki iki videoda Django REST Framework'ün izin sistemi (permissions) işlenecek.
- Mevcut API'lar ve endpoint'lar güvenli değil çünkü yazma işlemleri (POST, PUT, DELETE) herkese açık.
- Bu derste sadece giriş yapmış kullanıcılara görüntüleme izni verilecek ve belirli kullanıcı gruplarına yazma yetkisi verilecek.
- 02:39Güvenli ve Tehlikeli Metotlar
- Django REST Framework'de güvenli (safe) metotlar (GET) ve tehlikeli (unsafe) metotlar (POST, PUT, DELETE) vardır.
- Güvenli metotlar veriyi herkes görebilirken, tehlikeli metotlar veritabanına herhangi bir işlem yapabilir.
- Anonim kullanıcılar bile veritabanından kitap silme gibi tehlikeli işlemler yapabilir.
- 03:41Global İzin Sistemi
- Settings.py dosyasında "django.rest_framework =" ile değişken tanımlandığında, bazı ayarlar yapılabilir.
- "IS_AUTHENTICATED" izni, tüm Django projesinde ve API endpoint'lerinde geçerli olan global bir politikayı belirler.
- Default izin sistemi "AllowAny" olarak geçer ve herkese izin verir.
- 05:29İzin Sisteminin Uygulanması
- Settings.py dosyasına "IS_AUTHENTICATED" izni eklendiğinde, anonim kullanıcılar API'ye erişim sağlayamaz.
- Anonim kullanıcılar API'ye erişmeye çalıştığında 403 Forbidden hatası alır.
- Django REST Framework, kullanıcıların login/logout yapabilmesi için kısayollar sunar.
- 09:01Django'da Yetkilendirme Örnekleri
- Otantikasyon olmadan "authenticator read only" izni ile detay görüntüleme, listeleme ve yaratma işlemleri yapılabilir.
- Admin olarak giriş yapıldığında, kullanıcı listesinde isim ve HTML formu görüntülenebilir, ayrıca veri tabanına yazma işlemleri yapılabilir.
- Logout yapıldığında veri tabanına yazma işlemleri yapılamaz.
- 10:24Gelişmiş Yetkilendirme Gereksinimleri
- Birçok geliştirme senaryosunda gömülü gelen izin sınıfları yeterli olmayabilir.
- Farklı view'ler için farklı izinler belirlemek istenebilir, örneğin bazı kullanıcı grupları kitapları görüntüleyebilirken yorumları yapamaz.
- Global izin iptal edildiğinde tüm endpoint'lar "allow any" (herhangi biri) durumuna düşer ve herkes her işlemi yapabilir.