在JavaEE6中生成激活URL

在JavaEE6中生成激活URL,java,jsf-2,activation,Java,Jsf 2,Activation,我正在使用JavaEE6WebProfile开发一个web应用程序。我想通过电子邮件向新用户发送其帐户的激活链接。我应该如何实现这一点?我正在使用JSF2。是否有任何规范或建议的方法来执行此操作?激活URL会让人感觉软件服务正在处理“服务”请求 实现这项服务的好的候选者包括servlet,它将执行用户激活/验证并重定向到JSF成功页面我曾参与过一个项目,该项目要求用户确认其电子邮件id以激活其注册。密钥生成过程如下所示: 密钥创建 在users表中创建一列verification\u key,该

我正在使用JavaEE6WebProfile开发一个web应用程序。我想通过电子邮件向新用户发送其帐户的激活链接。我应该如何实现这一点?我正在使用JSF2。是否有任何规范或建议的方法来执行此操作?

激活URL会让人感觉软件服务正在处理“服务”请求


实现这项服务的好的候选者包括servlet,它将执行用户激活/验证并重定向到JSF成功页面

我曾参与过一个项目,该项目要求用户确认其电子邮件id以激活其注册。密钥生成过程如下所示:

密钥创建

  • users
    表中创建一列
    verification\u key
    ,该列保存用户的唯一验证密钥
  • 使用您的唯一用户名(本例中为电子邮件id)的哈希值,并将salt作为其密码
  • 将散列转换为该用户的
    验证密钥
    ,并存储在其中。这将是独一无二的(出于实际目的,我不会讨论碰撞的可能性)
  • 所以,底线是,
    key=Base64(Hash256(uniqueUserName+“+password))

    旁注:顺便说一句,并没有什么限制您使用密码作为salt。您可以动态创建任意字符串作为salt

    验证

  • 因为我们知道
    验证\u键
    是唯一的,所以从request参数中获取
    ,并找到匹配的行
  • 如果找到,将
    验证\u键
    设置为
    (这也将减少冲突的可能性(如果有),并将用户带到“成功验证页面”
  • 如果未找到,请将用户转到“已激活/未找到密钥/401页”

  • 您想要如何创建需要与激活URL一起发送的
    ,还是想要在JSF中生成图书标记URL?确切地说,用户注册,然后一个带有密钥的url被发送到他的电子邮件中,比如:点击激活你的帐户。可能是我可以从jsf访问url并获取密钥参数或其他相关信息:我以前从未真正使用过jsf2中的servlet,因为我从未真正需要它们。你能给我看一些代码片段吗?嗨。这是一个非常有用的答案,非常感谢。我想从您的实现中了解更多的事情。一旦用户被激活,你不必每次他尝试做某事时都再次检查,所以我应该有另一个表,比如“pending_users”,这样如果用户在用户表中,我就可以判断他被激活了?
    UUID.randomuid()
    可以用来生成随机数