我有一个简单的Rails应用程序,用户可以在其中向10多人发送大量电子邮件。在此电子邮件中,我希望始终在底部有一个链接,最终用户可以单击该链接以使自己退订通知。我不知道该如何解决。
电子邮件中是否只有通用链接,用户单击该链接然后输入其电子邮件地址即可退订?但是,这样做的问题是其他用户可能会取消订阅其他用户。
我想为每个电子邮件生成一个特定的唯一链接,以便当用户单击它时,它将自动从列表中删除该用户,而无需用户做一些额外的工作。
我应该从哪里开始以实现这一目标?
最佳答案
您的退订链接可能如下所示:http://host/application/unsubscribe?address=example@example.com&token=598bbdf39bc8f27b07fe85b6a7dd8decef641605
使用电子邮件地址和魔术令牌生成令牌。理想情况下,您可以将HMAC与SHA256一起使用,但是即使sha1应该也足够好:
$ echo "secret token example@example.com" | sha1sum
598bbdf39bc8f27b07fe85b6a7dd8decef641605 -
secret token
部分将在您的应用程序中固定,并且example@example.com
需要与电子邮件地址匹配。当然,如果秘密令牌曾被泄露,您将回到任何取消订阅任何人的人。您还可以在数据库中存储每个用户的魔术令牌,以验证URL中的令牌,这不会比这困难得多,而且绝对更安全。