-
Notifications
You must be signed in to change notification settings - Fork 6
2.c. Authentification
L'authentification est gérée dans le fichier bars_core/auth.py
.
On y définit un backend d'authentification qui implémente la méthode authenticate(username, password)
.
L'authentification à Chocapix se fait par un système de jeton (token).
On utilise pour cela le package Django REST Framework JWT (JSONWebToken).
On surcharge la méthode post
de la vue ObtainJSONWebToken
afin d'enregistrer les tentatives de connexion en base de données, avec le modèle LoginAttempt
.
De plus, c'est à cet endroit que l'on gère les champs User.current_login
et User.previous_login
.
Pour obtenir un jeton, il faut envoyer une requête POST à l'URL /api-token-auth/
avec les données :
{
"username": "my_username",
"password": "my_password"
}
La réponse est une chaine de caractères <token>
qu'il faut renvoyer dans le header d'authentification de chaque requête où l'on souhaite être authentifiée : Authorization: JWT <token>
.
Dès qu'une requête contient ce header, elle est interceptée par l'intergiciel d'authentification de Django.
On spécifie qu'on utilise une authentification par token dans le fichier bars_django/settings/common.py
:
REST_FRAMEWORK = {
# ...
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
# ...
),
# ...
}