Créer jeu
Télécharger
Obtenir Plan Académique
Partager le jeu
Intégrez-le à votre plateforme

Vous pouvez intégrer le jeu dans un LMS compatible avec LTI 1.1 ou LTI 1.3 comme Canvas, Moodle ou Blackboard. Les scores seront ainsi automatiquement enregistrés dans le carnet de notes de la plateforme.
Télécharger
Vous avez dépassé le nombre maximum de jeux que vous pouvez intégrer à Google Classroom avec votre Plan actuel.

Pour intégrer autant de jeux que vous le souhaitez dans Google Classroom, vous avez besoin d’un Plan Académique ou un Plan Commerciel.

Vous avez dépassé le nombre maximum de jeux que vous pouvez intégrer à Microsoft Teams avec votre Plan actuel.

Pour intégrer autant de jeux que vous le souhaitez dans Microsoft Teams, vous avez besoin d’un Plan Académique ou un Plan Commerciel.

Le téléchargement du jeu est une fonctionnalité exclusive pour les utilisateurs avec un Plan Académique ou un Plan Commercial.

Obtenez votre Plan Académique ou Plan Commercial dès maintenant et commencez à intégrer vos jeux dans votre LMS, votre site Web ou votre blog.

Si vous le souhaitez, vous pouvez télécharger une jeu de test ici et tester son intégration:

Quiz Diagnóstico

Test

Parties jouées 4 %Précision 20 Temps moyen 00:37

À propos de cette activité

Cuestionario de 10 pregunatas de opcion multiple para evaluar la comprension de conseptos clave del proyecto en gestion

Créé par

Colombia

Téléchargez la version pour jouer sur papier

Créez votre propre jeu gratuite à partir de notre créateur de jeu
Affrontez vos amis pour voir qui obtient le meilleur score dans ce jeu

Top Jeux

%
Anonyme
Anonyme
%
%
%
Vous avez dépassé le nombre maximum de jeux que vous pouvez imprimer avec votre Plan actuel.

Pour imprimer autant de jeux que vous le souhaitez, vous avez besoin d’un Plan Académique ou un Plan Commerciel.

Imprimez votre jeu
Quiz Diagnóstico
 

Quiz DiagnósticoVersion en ligne

Cuestionario de 10 pregunatas de opcion multiple para evaluar la comprension de conseptos clave del proyecto en gestion

par Esteba Vasquez
1

En Astro, ¿por qué conviene usar una ruta dinámica [id].astro para mostrar el detalle de una ficha, en vez de crear una página distinta para cada número de ficha?

2

En el flujo de login de tu proyecto, ¿cuál es el orden correcto?

3

¿Cuál es la diferencia clave entre Deno y Node.js que afecta cómo ejecutas tu backend?

4

El middleware verificarJWT debe ejecutarse antes de la lógica de la ruta router.get("/api/asistencias", verificarJWT, ...). Si Oak lo ejecutara después, ¿qué pasaría exactamente?

5

En un modelo de base de datos relacional, ¿para qué sirve una tabla intermedia (tabla de unión) cuando dos entidades tienen una relación muchos-a-muchos?

6

Un JWT para este proyecto lleva { id, rol, exp } en su payload. ¿Por qué no deberías incluir ahí el password_hash del aprendiz, aunque el token vaya firmado?

7

Dos aprendices usan la misma contraseña "12345". Sus password_hash en MySQL, generados con bcrypt, terminan siendo distintos entre sí. ¿Por qué?

8

El JWT de un aprendiz expira y el backend responde 401 en una petición. Si el frontend en Astro ignora ese error y sigue funcionando como si nada, ¿cuál es la consecuencia más probable?

9

DELETE /api/usuarios/:id debe usarlo solo el admin. Verificar que el JWT sea válido con verify() no es suficiente para garantizar esto. ¿Qué debe agregar el middleware?

10

Un instructor intenta marcar asistencia de un aprendiz que no pertenece a ninguna de sus fichas asignadas. Ocultar el botón en el frontend no es suficiente protección. ¿Dónde y cómo debe repetirse esa validación?

Explicación

Astro lee el parámetro de la URL (el id) en tiempo de build o de request, y con eso consulta los datos de esa ficha específica desde una sola plantilla [id].astro. Así evitas duplicar código para cada ficha — es el propósito mismo de las rutas dinámicas. (No hay límite de 10 páginas, y las rutas dinámicas no son obligatorias, solo convenientes aquí.)

El backend nunca debe confiar en que el frontend valide algo sensible como una contraseña — cualquiera podría manipular el frontend. Por eso el flujo correcto es: el frontend solo envía los datos, y es el backend quien los compara contra MySQL y decide si emite el JWT. MySQL no genera tokens, solo almacena datos.

Es la diferencia de diseño más importante entre ambos runtimes: Node ejecuta código con acceso total por defecto, mientras que Deno bloquea red/archivos/env hasta que tú los permites explícitamente con flags. Deno sí soporta JavaScript puro, y sí puede conectarse a MySQL (por eso instalamos el driver mysql de Deno).

Un middleware solo protege lo que viene después de él en la cadena. Si verificarJWT se ejecutara después de la lógica de la ruta, esa lógica ya se habría ejecutado y respondido — el middleware llegaría tarde, sin sentido.

Una relación muchos-a-muchos no se puede representar con una sola llave foránea en ninguna de las dos tablas (porque cada lado puede tener varios vínculos con el otro). La tabla intermedia resuelve esto guardando cada combinación válida como una fila propia, con una llave foránea hacia cada una de las dos tablas originales.

Un JWT está firmado (para que no se pueda alterar sin ser detectado) pero no está encriptado — su payload es solo texto codificado en Base64, que cualquiera puede leer en sitios como jwt.io sin necesitar la clave secreta. Por eso nunca debe llevar contraseñas ni datos sensibles.

bcrypt genera un valor aleatorio (salt) distinto cada vez que hashea una contraseña, y lo incorpora al resultado final. Así, aunque el texto plano sea idéntico, el hash resultante nunca es igual. Esto frustra ataques con tablas precalculadas (rainbow tables), porque un atacante no puede simplemente comparar hashes conocidos.

Si el frontend no reacciona al 401, sigue mostrando una interfaz que depende de datos que nunca llegaron (porque el backend rechazó la petición) — el usuario ve algo roto o vacío sin ninguna pista de qué pasó ni cómo arreglarlo. Lo correcto es capturar ese 401 y redirigir al login.

verify() solo confirma que el token es auténtico y no expiró — es decir, comprueba autenticación. Pero no dice nada sobre si ese usuario tiene permiso para esa acción específica — eso es autorización, y se resuelve revisando el campo rol que va dentro del payload del JWT.

El frontend es código que corre en el navegador del usuario, así que puede inspeccionarse y manipularse (herramientas de desarrollador, Postman, etc.) para saltarse cualquier validación visual. La única validación que realmente protege los datos es la que ocurre en el servidor: antes de guardar la asistencia, el backend debe cruzar el instructor_id que viene en el JWT contra la tabla ficha_asignaturas, confirmando que esa ficha/asignatura de verdad le pertenece a ese instructor.

Voulez-vous vraiment quitter la page ?

En quittant la page, vous perdrez la progression du jeu.