1

我正在使用 GlassFish 的身份验证机制开发 JavaEE 7 应用程序。为了注册我们的用户,我们希望有一个简单的注册表单,它会生成带有链接的电子邮件。单击该链接后,我们希望用户能够登录并填写他的用户资料。我的问题是:单击链接时,我们无法访问用户密码(明文),这当然是正确的。现在我们想在没有密码的情况下登录用户,这可以用 glassfish 编程吗?还是我们必须修改我们的安全领域(JDBC 领域的修改版本)?

“忘记密码”机制具有完全相同的要求。

4

1 回答 1

3

对于您的具体要求,我的建议如下:

  1. 编写自定义登录模块或自定义领域(云修改您现有的)文档
  2. 编写一个 servlet 并将其仅映射到确认 URL。
  3. 在 servlet 中,提取 URL 的相关部分。
  4. 调用HttpServletRequest#login()将 URL 的相关部分作为用户名传递。
  5. 发送重定向并享受!

请注意,领域应该能够区分“正常”登录和来自链接 servlet 的登录。您可以通过使用 UUID 或基于空密码来执行此操作。

但是,确认链接通常不意味着注册过程的最后一步,您可能会修改底层数据源以激活用户并禁止链接进一步访问?

在这种情况下,您的 servlet 可能应该直接使用 EJB、JPA 或其他任何东西修改数据源,告诉用户他们的帐户已启用并将它们发送到登录表单。

于 2013-08-13T02:24:13.123 回答