Django Academy · Lekcja

Uprawnienia i ograniczanie częstotliwości

Kontrolowanie, kto i jak często może wywoływać API

Lekcja 2 z 413 kroki

Uprawnienia i ograniczanie częstotliwości to bezpłatna lekcja Django Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Django Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Django Academy zawiera 4 lekcji w sumie.

Kto może wywoływać API?

Otwarte API pozwala każdemu odczytywać lub zmieniać dane. Uprawnienia określają, kto może wykonywać poszczególne działania na każdym endpoincie.

Atrybut permission_classes

Reguły dostępu przypina się za pomocą permission_classes do widoku lub ViewSet. DRF sprawdza je przed wykonaniem dowolnego działania.

from rest_framework.permissions import IsAuthenticated

class BookViewSet(viewsets.ModelViewSet):
    permission_classes = [IsAuthenticated]

Wbudowane klasy uprawnień

DRF zawiera gotowe reguły: AllowAny otwiera widok, IsAuthenticated wymaga zalogowanego użytkownika, a IsAdminUser ogranicza dostęp do personelu.

Odczyt dla wszystkich, zapis dla członków

IsAuthenticatedOrReadOnly to popularny kompromis: każdy może wykonywać GET, ale tylko zalogowani użytkownicy mogą wykonywać POST, PUT lub DELETE.

Ustawianie domyślnej reguły globalnie

Ustaw regułę obowiązującą w całym projekcie w settings.py, aby każdy widok był domyślnie zabezpieczony, chyba że jawnie z tego zrezygnuje.

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ],
}

Pisanie niestandardowego uprawnienia

Potrzebują Państwo własnej reguły? Utwórz klasę dziedziczącą po BasePermission i zwracaj True lub False z has_permission dla danego żądania.

from rest_framework.permissions import BasePermission

class IsOwner(BasePermission):
    def has_object_permission(self, request, view, obj):
        return obj.owner == request.user

Uprawnienia na poziomie obiektu

Użyj has_object_permission, aby sprawdzać pojedynczy rekord, na przykład pozwolić użytkownikom edytować tylko własne posty. 🔒

Teraz ograniczanie częstotliwości

Uprawnienia odpowiadają na pytanie „kto?”. Ograniczanie częstotliwości odpowiada na pytanie „jak często?”, ograniczając liczbę żądań, które klient może wysłać w określonym przedziale czasu.

Ograniczenia dla anonimowych i użytkowników

DRF oferuje AnonRateThrottle dla nieuwierzytelnionych odwiedzających oraz UserRateThrottle dla zalogowanych kont, dzięki czemu można stosować surowsze limity wobec nieznanych użytkowników.

Konfigurowanie limitów częstotliwości

Ustaw limity w konfiguracji za pomocą DEFAULT_THROTTLE_RATES, podając liczbę oraz okres, na przykład sekundę, minutę, godzinę lub dzień.

REST_FRAMEWORK = {
    'DEFAULT_THROTTLE_RATES': {
        'anon': '20/hour',
        'user': '1000/day',
    },
}

Co chroni ograniczanie częstotliwości

Ograniczanie częstotliwości chroni przed nadużyciami i niekontrolowanymi skryptami. Gdy klient przekroczy limit, DRF zwróci odpowiedź 429 Too Many Requests. 🛡️

Szybkie sprawdzenie

Sprawdźmy różnicę między tymi dwoma mechanizmami kontroli dostępu.

Podsumowanie: dostęp i limity częstotliwości

Można już kontrolować dostęp do endpointów za pomocą klas uprawnień oraz chronić je limitami częstotliwości. Razem zapewniają one bezpieczeństwo i stabilność API. 🎉

Bezpłatny start

Ucz się Python dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „Uprawnienia i ograniczanie częstotliwości” jest bezpłatna?

Tak — pełny tekst „Uprawnienia i ograniczanie częstotliwości” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Django Academy, przejdź na CoddyKit PRO. Kurs Django Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Uprawnienia i ograniczanie częstotliwości”?

Kontrolowanie, kto i jak często może wywoływać API Ćwiczysz Django Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Django Academy?

Nie wymagamy żadnego doświadczenia. Django Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Uprawnienia i ograniczanie częstotliwości”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Django Academy?

Tak. Każda lekcja Django Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. ModelViewSet i routery
  2. Uprawnienia i ograniczanie częstotliwości
  3. Uwierzytelnianie tokenami i JWT
  4. Filtrowanie, wyszukiwanie i stronicowanie
← Powrót do Django Academy