我正在为应用实施更新电子邮件功能。 这是我的数据库表
users: id, username, password, email, is_verified
email_verification: id, user_id, new_email, token
过程:
用户通过填写包含当前和未来电子邮件的表单来更新电子邮件请求。
应用会生成一个令牌,并将其持久保存到email_verification
并附带相关数据。然后发送电子邮件到帐户。 (通知电子邮件,验证未来的电子邮件)。
如果用户,验证,应用程序检查令牌验证和其他内容,请替换users
中的电子邮件。最后,在所有设备上记录用户会话以重新进行身份验证。
我的问题是:我可以获得更优雅的解决方案吗? (我正在使用laravel,如果有帮助的话)
答案 0 :(得分:0)
执行此操作的一种好方法是首先将电子邮件发送到旧电子邮件,验证用户是否要更改电子邮件并显示哪个电子邮件是新电子邮件,然后当他们点击电子邮件中的链接时,它将生成令牌存储值和发送另一封电子邮件到新的电子邮件地址,他们将点击链接更新电子邮件地址检查您的应用程序将看到令牌和旧电子邮件验证匹配然后更新
在控制器中新电子邮件的链接:编码 link / method(token)/(old_email)/(new_email)//您的订单
获取每个段并根据需要解码它们使用salt
因此,如果编码值被篡改,则无效
修改强> 如果所有3个匹配都执行更新,则验证数据库中的所有3个段,然后删除令牌或将令牌字段设置为其他随机数字集,以便在更新后他们无法再次单击该链接