我有Guids很容易解决的问题.
特别是,对于密码重置工作流程,我想将Guid令牌发送到用户的电子邮件,并让他们使用令牌重置密码.由于guids是唯一的,这是非常安全的,并且节省了我通过电子邮件发送人员密码,这是有风险的.
我注意到Ruby 有一个Guid宝石 ; 但它看起来很旧,它把东西写入文件系统.
有谁知道可以创建全球唯一标识符的任何其他宝石?
我知道我可以回到:
(0..16).to_a.map{|a| rand(16).to_s(16)}.join
Run Code Online (Sandbox Code Playgroud)
但它看起来并不像是一个合适的GUID ......
小智 290
从Ruby 1.9开始,uuid生成就是内置的.使用该SecureRandom.uuid
功能.
例如:
require 'securerandom'
SecureRandom.uuid # => "96b0a57c-d9ae-453f-b56f-3b154eb10cda"
Run Code Online (Sandbox Code Playgroud)
Sim*_*tti 37
>> require 'digest'
=> []
>> Digest::SHA1.hexdigest("some-random-string")[8..16]
=> "2ebe5597f"
>> SecureRandom.base64(8).gsub("/","_").gsub(/=+$/,"")
=> "AEWQyovNFo0"
>> rand(36**8).to_s(36)
=> "uur0cj2h"
Run Code Online (Sandbox Code Playgroud)
And*_*are 21
你看过UUIDTools了吗?
UUIDTools被设计成一个简单的库,用于生成任何各种类型的UUID(如果您更喜欢将其称为GUID,则为GUID).只要有可能,它就符合RFC 4122.
Mar*_*c W 16
Google产生以下Ruby库:
http://raa.ruby-lang.org/project/ruby-guid/
另外,在http://www.ruby-forum.com/topic/99262上,他们说你可以安装一个gem(gem uuid
在命令行上执行以安装它)然后再做
gem 'uuid'
puts UUID.new
Run Code Online (Sandbox Code Playgroud)
在您的代码中查看新的UUID.
(提示:我用Google搜索guid红宝石)
对Simone Carletti 答案的小更新:
SecureRandom.base64(8).gsub("/","_").gsub(/=+$/,"")
=> "AEWQyovNFo0"
Run Code Online (Sandbox Code Playgroud)
可以替换为:
SecureRandom.urlsafe_base64(8)
Run Code Online (Sandbox Code Playgroud)
创建正确的 mysql、varchar 32 GUID
SecureRandom.uuid.gsub('-','').upcase
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
79779 次 |
最近记录: |