OUJOOD.COM
Savoir qui appelle votre API est une première étape, mais cela ne suffit pas. Vous ne voulez probablement pas qu'un simple visiteur puisse supprimer vos articles ou modifier les profils des autres membres. C'est là qu'interviennent les permissions. Elles agissent comme un filtre qui autorise ou rejette une requête avant même que votre code ne soit exécuté.
Les permissions intégrées de DRF
Django REST Framework arrive avec une panoplie de règles prêtes à l'emploi. Les plus utilisées sont :
- AllowAny : Accès total, même pour les anonymes (à utiliser avec prudence).
- IsAuthenticated : Seuls les utilisateurs connectés peuvent accéder à la vue.
- IsAdminUser : Réservé aux administrateurs (ceux qui ont le statut "staff").
- IsAuthenticatedOrReadOnly : Les anonymes peuvent lire (GET), mais seuls les connectés peuvent modifier (POST, PUT, DELETE).
Configuration globale ou par vue
Je vous suggère de verrouiller votre API par défaut dans le fichier settings.py. Il est beaucoup plus sûr d'ouvrir manuellement quelques vues publiques que de risquer de laisser une porte dérobée sur une page sensible.
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
]
}
Si vous avez besoin de changer cette règle pour une vue précise, vous pouvez surcharger l'attribut permission_classes directement dans votre classe de vue.
from rest_framework.permissions import IsAdminUser
from rest_framework.views import APIView
class AdminOnlyView(APIView):
permission_classes = [IsAdminUser]
# ... logique de la vue
Créer des permissions personnalisées
Parfois, les règles de base ne suffisent pas. Par exemple, vous voulez que seul l'auteur d'un message puisse le modifier. Pour cela, on crée une classe qui hérite de BasePermission. C'est un excellent moyen de centraliser vos règles métier et de garder vos vues propres.
Une fois vos accès sécurisés, vous constaterez que gérer des dizaines d'URLs et de vues peut devenir répétitif. Pour simplifier tout cela, nous allons découvrir les ViewSets et Routers.
Par carabde | Mis à jour le 08/05/2026