160 votes

Guids en rubis

J'ai un problème qui est vraiment facilement résolu avec Guid.

En particulier, pour une réinitialisation de mot de passe de flux de travail, je voudrais envoyer un Guid jeton de l'utilisateur e-mail et de les avoir réinitialiser leur mot de passe en utilisant le jeton. Depuis les guid sont uniques, c'est assez sécurisé et me permet d'économiser de courriel des gens des mots de passe qui est risqué.

J'ai remarqué qu'il y est un Guid gem Ruby mais il a l'air assez vieux et il écrit des trucs sur le système de fichiers.

Quelqu'un sait-il de toutes les autres pierres précieuses qui peuvent créer un identificateur unique?

Je sais que je peut tout simplement tomber en arrière:

(0..16).to_a.map{|a| rand(16).to_s(16)}.join

Mais il ne semble pas vraiment comme un bon GUID ...

349voto

J _ Points 1084

A partir de Ruby 1.9, la génération uuid est intégrée. Utilisez la fonction SecureRandom.uuid .

41voto

Simone Carletti Points 77653

Comment créer de petits jetons uniques en rubis

 >> require 'digest'
=> []
>> Digest::SHA1.hexdigest("some-random-string")[8..16]
=> "2ebe5597f"

>> SecureRandom.base64(8).gsub("/","_").gsub(/=+$/,"")
=> "AEWQyovNFo0" 

>> rand(36**8).to_s(36)
=> "uur0cj2h"
 

35voto

Avdi Points 13086

Nous utilisons UUIDTools et n’avons aucun problème avec cela.

23voto

Andrew Hare Points 159332

Avez-vous regardé UUIDTools ?

UUIDTools a été conçu pour être une bibliothèque simple permettant de générer l’un des différents types d’UUID (ou un GUID si vous préférez les appeler ainsi). Il est conforme à la RFC 4122 chaque fois que possible.

16voto

Marc W Points 13166

Google donne ceci Ruby library:

http://raa.ruby-lang.org/project/ruby-guid/

Aussi, au http://www.ruby-forum.com/topic/99262 ils disent que vous pouvez installer un gem (execute gem uuid sur la ligne de commande pour l'installer), puis faire

gem 'uuid'
puts UUID.new

dans votre code pour voir un nouvel UUID.

(Indice: j'ai Googlé pour guid ruby)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X