Junior
Décrivez la mécanique du processus de connexion de l'utilisateur dans le système.
sobes.tech IA
Réponse de l'IA
- L'utilisateur saisit ses identifiants (nom d'utilisateur et mot de passe) sur la page de connexion.
- Le navigateur envoie une requête HTTP POST au serveur avec les données saisies.
- Le serveur reçoit la requête et transmet les identifiants au composant d'authentification.
- Le composant d'authentification vérifie les données reçues avec les informations dans la base de données des utilisateurs :
- Vérifie si un utilisateur avec ce nom d'utilisateur existe.
- Hash le mot de passe saisi et le compare avec le hash du mot de passe stocké pour cet utilisateur.
- En cas de succès de l'authentification :
- Le serveur crée une session pour l'utilisateur ou génère un jeton d'accès (par exemple, JWT).
- La session/le jeton est associé à un identifiant unique de l'utilisateur et contient des informations sur ses droits d'accès.
- Le serveur envoie une réponse HTTP avec le code 200 OK et transmet la session (via cookie) ou le jeton d'accès au navigateur de l'utilisateur.
- Le navigateur enregistre le cookie ou le jeton.
- L'utilisateur est redirigé vers la page d'accueil ou la page cible.
- En cas d'échec de l'authentification (nom d'utilisateur ou mot de passe incorrect) :
- Le serveur envoie une réponse HTTP avec un code d'erreur (par exemple, 401 Unauthorized) et un message d'erreur.
- Le navigateur affiche un message d'erreur à l'utilisateur sur la page de connexion.
- Lors des requêtes ultérieures aux ressources protégées, le navigateur envoie automatiquement la session sauvegardée (cookie) ou le jeton d'accès dans les en-têtes de la requête HTTP.
- Le serveur vérifie la validité de la session/du jeton et autorise l'accès à la ressource si l'authentification est confirmée et si l'utilisateur dispose des droits nécessaires.
Exemple (pseudocode) :
# Sur le serveur
def login(username, password):
user = database.find_user(username)
if user and hash(password) == user.hashed_password:
session_id = generate_session_id(user.id)
database.save_session(session_id, user.id)
return {"status": "success", "session_id": session_id}
else:
return {"status": "fail", "message": "Identifiants invalides"}
# Sur le client (dans le navigateur)
async function handle_login_submit(event):
event.preventDefault();
const username = document.getElementById("username").value;
const password = document.getElementById("password").value;
const response = await fetch("/api/login", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({ username, password })
});
const data = await response.json();
if (data.status === "success") {
// Le serveur établira un cookie avec session_id, ou nous pouvons enregistrer le jeton de la réponse
window.location.href = "/dashboard";
} else {
alert(data.message);
}