有没有一种简单的方法可以使用电子邮件 link 来确认公告之类的内容?

Is there a simple way to confirm something like a announcement using an email-ed link?

我已经尝试了几天,但无法真正找到关于我正在尝试做的事情的答案。

以注册为例,其中 link 用于确认您的电子邮件已发送,然后在单击 link 时确认帐户。

我想实现这个来为公告发布做一种验证。

我尝试以 symfony 验证电子邮件功能为例,但在这种情况下,它在单击 link 时使用经过身份验证的用户。在我的例子中,点击 link 的人在该网站上没有帐户,不应进行身份验证。

点击邮件 link 后,如何将数据库中的布尔值(例如 'is_confirmed' 从 0 更改为 1 而无需用户身份验证?

谢谢

您仍然需要进行身份验证,但您将使用 one-time 令牌而不是用户 ID 和密码来进行身份验证。对于每条消息:

  • 生成一个独特的不可猜测的字符串,如 UUID v4。
  • 无论您希望令牌将来有多少minutes/hours/days,都可以生成到期时间戳。
  • 在数据库中保存令牌和到期时间戳,以便它以某种方式与相关记录相关联。这可能意味着向现有的 table 添加两列,或者创建一个新的连接 table.
  • 向收件人生成一封电子邮件,其中包含嵌入令牌的 link,例如 http://example.com/approve?token=whatever or http://example.com/approve/whatever
  • 创建 /approve 页面。将其配置为不需要任何传统的 Symfony 身份验证。那么它应该:
    • 查找提供的令牌。
    • 确认关联的时间戳尚未过期。
    • 执行您想发生的任何过程。
    • 从数据库中擦除令牌和过期时间。