我正在设计一个电子邮件来总结用户的状态,这封电子邮件会为用户提供一些建议,让他们在帐户中采取行动。所以,我想知道有没有办法允许用户立即通过电子邮件进入自己的帐户而无需再登录一步?
答案 0 :(得分:4)
当然。如果你正在编写应用程序,那么一切皆有可能。
通常的做法是在您提供给应用程序的每个链接中包含“身份验证器”。当我们说“认证者”时我们所说的是“随机字母和数字”。
您添加的每个链接可能如下所示:
<a href="...?auth=ilTmMDiTL0d46ZmNfDOpme84t3E8XdEbeFbRSZyCSoAiIkGFr2gRQnRFrtmaA4i">Delete My Account Forever</a>
为了完成这项工作,您的数据库需要记录ilTmMDiTL0d46ZmNfDOpme84t3E8XdEbeFbRSZyCSoAiIkGFr2gRQnRFrtmaA4i
是一个有效的身份验证器,以便访问VoteyDisciple
的帐户。因此,当该字符串出现时,您就知道要登录。
问题当然是,如果有人看到过这封电子邮件(包括我是否要将其转发给某人),他们也可以点击该链接,然后冒充我!您可以通过对这样的验证器有效期限施加时间限制来缓解这种情况,通过将其使用限制为仅一个特定操作(例如,“我会让你做X,但是如果你想做任何其他事情你“我需要登录”,或者通过其他方式。
但最终你的目标是让人们在没有登录的情况下“登录”这一事实表明这不是一个高安全性的环境,因此认证者可能受到威胁的风险可能不会引起太大关注。
答案 1 :(得分:1)
您可以生成唯一的一次性URL,以允许用户通过将token
存储在数据库中并将其与用户的帐户相关联来登录。如果需要,您可以像这样构建URL:
http://www.example.com/login.php?token=EWYAOpJBHgEioVrWRDzeDGhySEyOGKpsaUIe0EnF
最后的随机内容几乎不可能通过蛮力破解,因为你可以任意长。
一旦用户使用该URL登录,您可以通过将其重定向到主页来防止再次使用它,提供错误消息,指出该URL是临时的并且已过期,或者向用户提供一个按钮发送包含其他网址的电子邮件。
但我认为如果你只是在用户点击链接时向用户提供部分填充的表单(只有用户名)会更好,因为该URL可以被回收或留下来而不用担心流氓暴君。