2010-02-01 39 views
2

场景:如何实现电子邮件地址选择加入?

用户给你一个电子邮件地址。在他们注册服务之前,他们需要验证电子邮件地址 - 通过电子邮件发送URL,点击它,然后他们可以订阅服务。

问题:

该URL是什么样子?我在想一个随机的GUID会好的。

您是否使用相同的随机密钥进行取消订阅请求?

在我应该看的双启动有什么好的开源实现吗?

回答

1

我已经在这种目的之前使用了一个随机的GUID来验证电子邮件帐户,它运作良好。除非您正在处理超安全,超敏感的数据,否则就足够了。我发现没有理由不使用相同的GUID来取消订阅请求 - 这样,您只需要为每个帐户存储一个GUID,以便查找订阅者数据库(或存储它们)。您可以将取消订阅链接添加到所有电子邮件的底部,使其成为一个简单的单击选项。

+0

Guid.NewGuid()。ToString(“N”)一直是很久以前的朋友。 – granadaCoder 2015-08-10 17:14:08

1

这很容易实现一个随机字符串和GET请求。我可能不会使用相同的取消订阅,因为你知道大多数人将失去原来的电子邮件。以同样的方式做 - 他们说他们想取消订阅,而且这样做,但也会发送电子邮件说,如果发生意外,您已取消订阅。

编辑:你甚至不需要确保一个唯一的字符串,因为你也会传递电子邮件地址。

+0

我希望不要在URL中包含电子邮件地址 - 实际上,随机字符串将是电子邮件地址的代理。 退订链接将包含在每个发送的电子邮件中。 – chris 2010-02-01 19:32:40

+0

在这种情况下,你只需要确保你的字符串是唯一的。这也造成了另一个问题 - 您确定独特性多久了?假设我订阅并点击链接。第二天,其他人获得相同的随机字符串(不太可能,但可能),但不会点击链接。我忘了,我再次点击它。 Poof,他们已订阅。 – Jon 2010-02-01 19:44:33

+0

或者更糟糕的是,如果您使用相同的想法取消提交。这里还有一个链接(可能在我的邮箱中很深),现在可能会取消订阅其他人。或者,在假设的最坏情况下,您只需使用一个脚本在每个组合中打开取消订阅确认页面。 (好吧,从统计角度来看,它们不会很远,我的观点是,只有两个有意义的令牌通常比一个令牌更好。) – Jon 2010-02-01 19:47:11