gpt4 book ai didi

ruby - Rails, ruby​​ : does SecureRandom. urlsafe_base64 是否需要检查 token 的唯一性?

转载 作者:数据小太阳 更新时间:2023-10-29 06:52:03 25 4
gpt4 key购买 nike

我需要存储在我的数据库中的用户的唯一 token 。在我生成 token 的那一刻,我在使用它之前检查它在数据库中的唯一性。这是我实际需要执行的测试还是在浪费时间?

我看过 Ruby 2.0.0 API for SecureRandom它并没有阐明我是否可以“信任”唯一性。

我知道没有随机值真的是“唯一的”,并且存在的可能性是有限的。但是有了 32 位的十六进制值,我相信我再也不会在我的应用程序中遇到相同的值,但想问问是否有人知道这种情况下的“陷阱”。

另一个考虑因素是使用 SecureRandom.uuid 但这本质上是相同的情况。

# usage
user.password_reset_token = Generator.unique_token_for_user(:password_reset_token)

# Performs DB query to ensure uniqueness
class Generator
def self.unique_token_for_user(attribute)
begin
token = SecureRandom.urlsafe_base64(32)
end while User.exists?(attribute => token)

token
end
end

最佳答案

SecureRandom.uuid 生成 uuid。 UUID 长度为 128 位,可以保证跨空间和时间的唯一性。与 urlsafe_base64 不同,它们被设计为全局唯一。参见 RFC4122 .

关于ruby - Rails, ruby​​ : does SecureRandom. urlsafe_base64 是否需要检查 token 的唯一性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22919797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com