2011-02-02 16 views
7

Estoy desarrollando una aplicación web utilizando Java EE 6 Web Profile. Deseo enviar por correo electrónico a un nuevo usuario un enlace de activación para su cuenta. ¿Cómo debo implementar esto? Estoy usando JSF2. ¿Hay alguna especificación o forma recomendada para hacer esto?Generar URL de activación en Java EE 6

+0

¿Desea crear la "clave" que se debe enviar con la URL de activación o desea generar un URL con marca de libro en JSF? – Nishant

+0

exactamente, el usuario se registra, y una url con una clave se envía a su correo electrónico como: haga clic en http://misitio.com/activate?key=dsafadsfwe para activar su cuenta. – arg20

+0

Puede ser si pudiera acceder a la url de jsf y obtener el parámetro clave o algo – arg20

Respuesta

16

que han trabajado en un proyecto que requiere al usuario que confirme su correo electrónico-id para activar su registro. El proceso de generación de claves era así:

Creación de clave

  1. crear una columna verification_key en users tabla que sostiene clave única de validación para un usuario.
  2. Use SHA256 hash de su único nombre-usuario (id-email en este caso) con salt como contraseña.
  3. Convertir el hash a base64 y almacenar en verification_key de ese usuario. Esto será único (para propósitos prácticos, no entraría en probabilidad de colisión).

línea así, parte inferior, key = Base64(Hash256(uniqueUserName+"."+password))

......

nota al margen: Por cierto, nada restringe el uso de contraseña como la sal. Puedes simplemente crear una cadena arbitraria al vuelo como sal.

Verificación

  1. Como sabemos el verification_key es único, obtener el key de solicitud de parámetros y encontrar la fila coincidente.
  2. Si lo encuentra, establezca verification_key como null (esto también reducirá las posibilidades de colisión, de haberlo) y lleve al usuario a la "página verificada con éxito".
  3. Si no se encuentra, lleve al usuario a "ya activado/clave no encontrada/401 página".
+1

Hola. Esta es una respuesta muy útil, muchas gracias. Quiero saber una cosa más de su implementación.Una vez que un usuario está activado, no debería tener que volver a verificar cada vez que intenta hacer algo, así que si tuviera otra, diga "pending_users", de modo que si el usuario está en la tabla de usuarios, ¿puedo suponer que está activado? – arg20

+1

'UUID.randomUUID()' se puede usar para generar un número aleatorio –

1

Una URL de activación evoca una impresión de un servicio de software que procesa una solicitud de 'servicio'.

Los buenos candidatos para realizar este servicio incluyen los servlets que llevará a cabo el usuario de activación/validación y redirigir a un éxito páginas JSF

+0

Nunca he usado realmente servlets con jsf2 antes, ya que nunca los he necesitado realmente. ¿Puedes mostrarme algún fragmento de código, por favor? – arg20