Junior
Describe la mecánica del proceso de inicio de sesión del usuario en el sistema.
sobes.tech AI
Respuesta de la IA
- El usuario ingresa sus credenciales (nombre de usuario y contraseña) en la página de inicio de sesión.
- El navegador envía una solicitud HTTP POST al servidor con los datos ingresados.
- El servidor recibe la solicitud y pasa las credenciales al componente de autenticación.
- El componente de autenticación verifica los datos recibidos con la información en la base de datos de usuarios:
- Verifica si existe un usuario con ese nombre de usuario.
- Hashea la contraseña ingresada y la compara con el hash de la contraseña almacenada para ese usuario.
- En caso de autenticación exitosa:
- El servidor crea una sesión para el usuario o genera un token de acceso (por ejemplo, JWT).
- La sesión/token se asocia con un identificador único del usuario y contiene información sobre sus permisos de acceso.
- El servidor envía una respuesta HTTP con código 200 OK y transmite la sesión (a través de cookie) o el token de acceso al navegador del usuario.
- El navegador guarda la cookie o el token.
- El usuario es redirigido a la página principal o a la página objetivo.
- En caso de autenticación fallida (nombre de usuario o contraseña incorrectos):
- El servidor envía una respuesta HTTP con un código de error (por ejemplo, 401 Unauthorized) y un mensaje de error.
- El navegador muestra un mensaje de error al usuario en la página de inicio de sesión.
- En solicitudes posteriores a recursos protegidos, el navegador envía automáticamente la sesión guardada (cookie) o el token de acceso en los encabezados de la solicitud HTTP.
- El servidor verifica la validez de la sesión/token y permite el acceso al recurso si la autenticación está confirmada y el usuario tiene los permisos necesarios.
Ejemplo (pseudocódigo):
# En el servidor
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": "Credenciales inválidas"}
# En el cliente (en el navegador)
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") {
// El servidor establecerá una cookie con session_id, o podemos guardar el token de la respuesta
window.location.href = "/dashboard";
} else {
alert(data.message);
}