¿Podría ser una de estas opciones?
Opción 1: Guardar todo en la base de datos por usuario:
Observa que la frase "
lenguaje12345" para la clave puede ser un valor aleatorio por usuario.
El sistema puede aplicar la validación de varias formas con el Crypt.Check usando la columna usua_clave o hacer una comparación directa con usua_clave2. El riesgo de esta opción es que los datos están legibles en la base de datos. No se si es buena idea enviar la frase para que la clave se encripte cuando se envía al servidor.
Opción 2: No guardar la clave legible ni la frase aleatoria por usuario.
En esta opción la clave se envía legible al servidor y se compara solamente con Crypt.Check y la columna usua_clave.
Si el usuario perdió la clave entonces se le tendría que generar una nueva.
Si los datos son correctos, entonces el (usuario...) se guarda en la session del navegador.
Me dicen si es lo correcto o hay una mejor forma.
Saludos.