【问题标题】:Creating unique token for URL's Rails为 URL 的 Rails 创建唯一令牌
【发布时间】:2019-05-12 08:43:21
【问题描述】:

我正在使用 ahoy emails gem 进行电子邮件分析。为了跟踪电子邮件,它们只是

@ahoy_message = AhoyEmail.message_model.new
ahoy_message.token = generate_token

生成令牌的方法是这样的,

   def generate_token
      SecureRandom.urlsafe_base64(32).gsub(/[\-_]/, "").first(32)
   end

我怀疑生成的token可能有重复,我可以检查生成的token是否每次都是唯一的,所以我试图改变token的生成方法,如下所示,

 def generate_token
   URI.escape(Base64.encode64 "#{Time.now.to_f},#{@mail.id}") # @mail is object in db
 end

默认方法可以吗,否则我可以使用与时间相关的东西来创建唯一令牌吗?

【问题讨论】:

  • 就个人而言,我会使用SecureRandom.uuid,因为它已经作为标准库的一部分存在。但是,就像任何“唯一生成”(非事务性和不可重试)算法一样,它仍然受制于竞争条件。请参阅此SO 以获取见解。

标签: ruby-on-rails ruby-on-rails-4 time uniqueidentifier


【解决方案1】:

https://blog.bigbinary.com/2016/03/23/has-secure-token-to-generate-unique-random-token-in-rails-5.html

您可以使用has_secure_token 自动为模型的属性生成令牌。

【讨论】:

    猜你喜欢
    • 2015-02-04
    • 2011-08-26
    • 1970-01-01
    • 2016-12-12
    • 2021-11-13
    • 2017-04-15
    • 2014-03-31
    • 1970-01-01
    • 2017-09-02
    相关资源
    最近更新 更多