【发布时间】:2013-02-18 08:09:24
【问题描述】:
用户在我的网站上注册后,我需要实施一个电子邮件验证机制。
我试图了解什么是最好的架构,这是我的猜测:
- 定义电子邮件验证的特殊路径
- 当用户注册时生成一个令牌并使用令牌保存在缓存中 -> 用户映射。
- 发送包含 URL 的电子邮件,该 URL 指向提供令牌作为参数的路由
- 在特殊路由控制器中,使用令牌从缓存中检索用户,验证电子邮件并将其存储在数据库中。
我的方法对吗?有更好的解决方案吗?
【问题讨论】:
-
听起来不错。但是你不应该仅仅依靠缓存来持久化令牌 - 也将它存储在数据库中。此外,之后可能会删除令牌(并且无论如何都会在某个时候过期?)。
-
如何处理过期问题?
-
在创建时将当前时间戳与令牌一起存储在数据库中,然后在激活验证例程时检查它是否太旧。 (如果需要考虑数据库空间,您还可以定期运行作业以清理任何旧令牌。)
-
仅供参考:完整堆栈身份验证模块可用于 Play 2.0。它允许通过电子邮件验证、密码恢复、使用 3 rd 方服务登录等注册新帐户。此外,还包括
Deadbolt 2的角色和权限,是多语言且完全可定制的。见:joscha.github.com/play-authenticate
标签: scala playframework playframework-2.0