上一篇文章中,我们讲到发送邮件激活账号,同时我们还引入了一个过期时间问题,那么如果我们的用户在很久之后才去点击激活链接,显然会受到一个token已经过期的提示,但是同时我们希望可以让用户重新发送一封激活邮件,这是可以让用户重新输入一次邮箱地址,但是更好的做法是只需要用户点一下“重新发送”按钮,然后受到一封有“新”的token的邮件即可。
此时用户看到的token也变化了,如果再用以前的token,就会是一个无效的token了,和原来token关联的那条记录token的有效期延长了。好了我们看看具体怎么做。
1.先看一下我们的一共修改的文件
在OldRegistrationController中我们添加下面的代码
同时我们重构了OnRegistrationCompleteEvent,添加了一个token和构造方法
同时我们还重构了RegistrationListener
在自定义异常处理中我们添加了MailAuthenticationException
最后我们的UserServiceImpl添加了两个实现
还有MvcConfig中添加了一行代码,用于MailError.html
至此我们的改动工作全部完成了。
我们点击上面的Resend按钮后,我们可以收到新的邮件。
在你点击上面的邮件链接后,你会看到
现在正准备登录,可能你忘记了上次输入的密码,那么这时候,我们就要写一个功能“忘记密码”。这个留到下一篇文章。
具体的代码可以参见github.