Django Academy · Lektion

Tilladelser og throttling

Styr, hvem der kan kalde jeres API, og hvor ofte

Lektion 2 af 413 trin

Tilladelser og throttling er en gratis Django Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Django Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Django Academy-kurset indeholder 4 lektioner i alt.

Hvem må kalde dit API?

Et åbent API lader alle læse eller ændre dine data. Tilladelser afgør, hvem der må gøre hvad på hvert slutpunkt.

Attributten permission_classes

Du knytter adgangsregler til en visning eller ViewSet med permission_classes. DRF kontrollerer dem, før en handling køres.

from rest_framework.permissions import IsAuthenticated

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

Indbyggede tilladelsesklasser

DRF leveres med færdige regler: AllowAny åbner en visning, IsAuthenticated kræver en bruger, der er logget ind, og IsAdminUser begrænser adgangen til personale.

Læsning for alle, skrivning for medlemmer

IsAuthenticatedOrReadOnly er en populær mellemvej: Alle kan udføre GET, men kun brugere, der er logget ind, kan udføre POST, PUT eller DELETE.

Indstil en global standard

Indstil en regel for hele projektet i settings.py, så alle visninger som udgangspunkt er sikre, medmindre de fravælger det.

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

Skriv en brugerdefineret tilladelse

Har du brug for din egen regel? Opret en underklasse af BasePermission, og returnér True eller False fra has_permission for anmodningen.

from rest_framework.permissions import BasePermission

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

Tilladelser på objektniveau

Brug has_object_permission til at kontrollere en enkelt post, for eksempel så brugere kun kan redigere de indlæg, de selv ejer. 🔒

Nu: Begrænsning af anmodninger

Tilladelser besvarer spørgsmålet hvem. Begrænsning besvarer spørgsmålet hvor ofte og begrænser antallet af anmodninger, en klient må sende i et tidsinterval.

Begrænsning for anonyme kontra brugere

DRF tilbyder AnonRateThrottle til brugere uden godkendelse og UserRateThrottle til konti, der er logget ind, så du kan være strengere over for fremmede.

Konfigurering af hastighedsgrænser

Indstil grænserne i indstillingerne med DEFAULT_THROTTLE_RATES ved at angive et antal og en periode som sekund, minut, time eller dag.

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

Hvad begrænsning beskytter imod

Begrænsning beskytter dig mod misbrug og løbsk kørende scripts. Når en klient overskrider grænsen, returnerer DRF et 429 Too Many Requests-svar. 🛡️

Hurtigt tjek

Lad os bekræfte forskellen mellem de to adgangsvagter.

Opsummering: Adgang og hastighedsgrænser

Du kan nu kontrollere adgangen til slutpunkter med tilladelsesklasser og beskytte dem med begrænsningshastigheder. Sammen holder de dit API både sikkert og stabilt. 🎉

Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
30
Lektioner
120

Ofte stillede spørgsmål

Er lektionen “Tilladelser og throttling” gratis?

Ja — alle 3 lektioner i læringssporet Django Academy, inklusive “Tilladelser og throttling”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Django Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Tilladelser og throttling”?

Styr, hvem der kan kalde jeres API, og hvor ofte Du øver dig i Django Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Django Academy?

Der kræves ingen tidligere erfaring. Django Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Tilladelser og throttling”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Django Academy-lektion?

Ja. Alle Django Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. ModelViewSet og routers
  2. Tilladelser og throttling
  3. Token- og JWT-godkendelse
  4. Filtrering, søgning og pagination
← Tilbage til Django Academy