【发布时间】:2010-12-04 02:54:34
【问题描述】:
我有一个使用 GUID 很容易解决的问题。
特别是,对于密码重置工作流程,我想向用户的电子邮件发送一个 GUID 令牌,并让他们使用该令牌重置他们的密码。由于 GUID 是唯一的,因此这非常安全,并且可以节省我通过电子邮件向人们发送密码的风险。
我注意到有一个uuid gem @ rubyforge,但它看起来很旧,它会将内容写入文件系统。
有谁知道其他可以创建全球唯一标识符的 gem?
我知道我可以退回到:
(0..16).to_a.map{ |a| rand(16).to_s(16) }.join
但它看起来并不像一个合适的 GUID ...
【问题讨论】:
-
使用这样的随机字符串不太正确; UUID 中的某些位指定变体和版本。对于随机 UUID,您可能需要变体 2 (RFC 4122) 和版本 4,在这种情况下,必须将 6 个特定位设置为正确的值。
-
是的@dafrazzman 是对的。随机拼凑“类似于 UUID”的东西并不能保证唯一性。虽然没有 UUID 是真正保证的,但使用随机数构建一个更容易发生冲突,并且不值得贴上“UUID”标签。绝对要使用 SecureRandom.uuid!