只是记录一下思路,具体实现可参考rails tutorial第10章节,非常详细。
用户激活
- 在注册的时候,随机生成一个唯一的
token
- 然后根据
token
生成一个加密的字符串存储在数据库中activation_digest
- 同时生成一个链接(该链接中包含刚刚生成的
token
和用户的email
),发送到用户的邮箱中。 - 当用户打开该链接时,判断链接中传过来的
email
和token
是否正确,如果正确,则激活用户并登录。
密码重设
- 通过
views
,获得忘记登录密码的邮箱 - 随机生成一个
token
- 根据
token
生成一个加密的字符串存储在数据库中reset_digest
,同时还生成一个reset_sent_at
时间,用来判断reset_digest
的过期时间 - 生成一个链接(包含刚刚生成的
token
和用户的email
),发送到用户的邮箱中。 - 用户打开链接后,得到一个重新输入密码的页面(该页面需要包含
email
和token
的属性,以便后续的操作。因为token
是公开的,所以可以显示在url中,email
则可以通过hidden_tag_field
来隐藏显示) - 用户提交后,判断两次密码是否都为空,判断
email
和token
是否正确,判断用户是否是激活用户,再判断reset_diget
是否过期。如果都正确,则密码重设成功。
网友评论