首页 > 解决方案 > 在 ruby​​ >= 2.5.1 / >= rails 5 中生成随机令牌

问题描述

我可以从这里看到has_secure_token可以为(用户)模型中的新记录生成随机令牌。我怎样才能简单地生成一个随机令牌而不需要为模型做呢?(即假设一个应用程序没有模型或简单地说,运行一些(最好是非常简单的)方法,它应该返回一个随机字符串,如pX27zsMN2ViQKta1bGfLmVJE

我已经按照其他答案中的建议尝试了宝石SecureRandom摘要,但似乎都没有成功捆绑安装(SO 答案很旧,所以这些宝石可能已被弃用?) - 我使用的是 ruby​​ 2.5.1 和 rails 5.2.3

我的目标只是生成令牌以用作 API 的密钥,所以我基本上只需要在 url 中安全使用的随机生成的字符串,也许是一种我可以指定令牌长度的方法(但我会采取什么我现在可以得到!)

标签: ruby-on-railsrubyruby-on-rails-5

解决方案


只需使用SecureRandom. 它不是您必须安装的 gem。它内置在 Ruby 中:

⇒ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin18]
⇒ irb
2.5.1 :001 > require 'securerandom'
 => true
2.5.1 :002 > SecureRandom.hex(32)
 => "89d45edb28859a905672b707c8f7599f766d12074584ef48a997230dfc0e0998"
2.5.1 :003 > SecureRandom.base64(12)
 => "KaZbhQ7o7U/f9pMs"
2.5.1 :004 > SecureRandom.uuid
 => "ade17ef5-0943-4c70-b417-df7c96c198cd"

推荐阅读