单击通过 JavaMail 发送后禁用 link
Disable link after click sent through JavaMail
我正在使用 java 邮件和激活功能向用户发送电子邮件。当用户点击忘记密码时,将触发一封邮件到用户邮箱 link 以重置密码。
我不希望用户再次使用相同的 link,因此当他从电子邮件中单击 link 时...应该禁用 link..
我不知道该怎么做...
String body = "<a href='resetpage.jsp'>Reset Password</a>";
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(username));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(email));
message.setSubject("Password Reset");
MimeBodyPart mbp = new MimeBodyPart();
mbp.setText(body, "UTF-8", "html");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(mbp);
message.setContent(multipart);
Transport.send(message);
从这段代码中,我在电子邮件中收到 link..但是现在在用户单击电子邮件中的 link 后..应该禁用 link..或者我想确定..当用户再次点击相同的 link 时它应该不起作用..
您是否考虑过为此使用随机令牌?
此令牌可以包含在 link (reset.jsp?token=RANDOM)
每当用户被定向到重置页面时,它都可以读取给定的令牌并将其标记为已使用。
当再次使用使用过的令牌时,您可以将用户重定向到另一个页面(例如登录页面或错误页面)。
(我知道这可能不是您问题的完整答案,但我无法对您的问题添加评论。)
如果我对您的理解正确,您希望允许用户单击 link 以实现某些功能,然后使 link 无效以确保它不能被重新用于执行其他更改.
我的建议是:
- 生成某种令牌 UUID.randomUUID().toString() 会很好用。
- 将令牌存储在数据库中,并指明它的用途和功能(Joe Soap,密码重置)
- 发送 URL 给用户,包括 ?token=[token_string_here]
- 页面加载时检查令牌是否存在并显示您希望提供的功能。
- 当代码对用户/帐户进行更改时,在执行操作之前再次检查令牌是否存在,然后从数据库中删除令牌
我正在使用 java 邮件和激活功能向用户发送电子邮件。当用户点击忘记密码时,将触发一封邮件到用户邮箱 link 以重置密码。
我不希望用户再次使用相同的 link,因此当他从电子邮件中单击 link 时...应该禁用 link..
我不知道该怎么做...
String body = "<a href='resetpage.jsp'>Reset Password</a>";
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(username));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(email));
message.setSubject("Password Reset");
MimeBodyPart mbp = new MimeBodyPart();
mbp.setText(body, "UTF-8", "html");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(mbp);
message.setContent(multipart);
Transport.send(message);
从这段代码中,我在电子邮件中收到 link..但是现在在用户单击电子邮件中的 link 后..应该禁用 link..或者我想确定..当用户再次点击相同的 link 时它应该不起作用..
您是否考虑过为此使用随机令牌? 此令牌可以包含在 link (reset.jsp?token=RANDOM) 每当用户被定向到重置页面时,它都可以读取给定的令牌并将其标记为已使用。
当再次使用使用过的令牌时,您可以将用户重定向到另一个页面(例如登录页面或错误页面)。
(我知道这可能不是您问题的完整答案,但我无法对您的问题添加评论。)
如果我对您的理解正确,您希望允许用户单击 link 以实现某些功能,然后使 link 无效以确保它不能被重新用于执行其他更改.
我的建议是:
- 生成某种令牌 UUID.randomUUID().toString() 会很好用。
- 将令牌存储在数据库中,并指明它的用途和功能(Joe Soap,密码重置)
- 发送 URL 给用户,包括 ?token=[token_string_here]
- 页面加载时检查令牌是否存在并显示您希望提供的功能。
- 当代码对用户/帐户进行更改时,在执行操作之前再次检查令牌是否存在,然后从数据库中删除令牌