如何从正确的电子邮件地址跟踪激活链接点击



我正在Laravel 5.1中创建带有电子邮件激活链接的用户注册页面。我发送激活链接到输入的正确电子邮件地址。如何查找激活链接是从我发送邮件的正确电子邮件地址点击

让您了解这是如何工作的:

  1. 当用户注册时,为新用户生成每个用户的唯一令牌(例如60be22f4-e849-4676-b64b-c3493e8709e0)
  2. 将此唯一令牌与用户名和密码一起保存在数据库中
  3. 将此唯一令牌与激活电子邮件一起发送(例如,作为链接:http://my-domain.com/user/confirm/60be22f4-e849-4676-b64b-c3493e8709e0
  4. 当用户单击此链接时,在用户表中搜索唯一id,并将该用户标记为活动/已确认

有一种非常简单的方法:

  1. 在数据库中为每个用户存储一个"秘密",这应该在第一次创建时生成,并且在系统中用户的生命周期内不应该更改。Secret可以是一个简单的字符串,如"ajchdu8"

  2. 设置一个包含用户ID及其"激活签名"的激活路由,如下所示http://yourdomain.com/activate/{user_id}/{signature}

  3. 创建一个生成和比较这些签名的机制,并使用每个用户的秘密作为一种方式,让用户只有那个用户才能激活他们的帐户(或者你把URL给了谁)

签名基本上只是我们所知道的关于用户的信息的散列,但在数据库中不会改变,所以它可能只是用户id和他们的秘密的散列,然后通过在链接中提供用户id,你可以在数据库中按id查找用户,以获取他们的秘密以及验证签名所需的任何其他详细信息。

最新更新