in rails 3 Devise, un enregistrement d'utilisateur a un mot de passe et un mot de passe_salt. P>
Comment dans la console, puis-je obtenir le mot de passe d'un utilisateur? Comment engendrer? p>
4 Réponses :
Je pense que ces mots de passe sont cryptés à sens unique: vous pouvez prendre un mot de passe fourni par l'utilisateur, le chiffrer et le comparer au crypté dans la base de données (si correspondance - Tentative réussie). Mais non-chiffrer celui de la base de données n'est pas possible, de sorte que personne ne puisse obtenir tous les mots de passe. C'est une fonctionnalité de sécurité. P>
Devis Par défaut utilise l'algorithme BCRYPT, que AFAIK n'est pas décrypte. Si vous devez être capable de déchiffrer des mots de passe, vous devez utiliser un algorithme différent tel que le AES . P>
Il y a un GEM qui prolonge le support AES pour le congé. p>
Il faut simplement, tout simplement et très légèrement l'accent, jamais - je répète, jamais, jamais déchiffrer un mot de passe des utilisateurs! Tout comme vous ne décrypte pas les informations de carte de crédit des utilisateurs. Vous les fournissez simplement une méthode pour eux, elles-mêmes de le réinitialiser.
@Ekampp Eh bien lorsque vous avez besoin du mot de passe pour interagir avec un service externe comme IMAP, vous aurez un problème sans décryptage. Bien entendu, la solution pourrait utiliser l'authentification OATH2 avec des certificats mais qui ajoute beaucoup de frais généraux. Parfois, l'authentification AES a du sens.
class User < ActiveRecord::Base
devise :database_authenticatable...
def verify_password?(password)
encryptor_class = Devise::Encryptors.const_get(Devise.encryptor.to_s.classify)
encryptor_digest = encryptor_class.digest(password, Devise.stretches, self.password_salt, Devise.pepper)
encryptor_digest == self.encrypted_password
end
end
Devise utilise BCRYPT. Vous avez besoin de modifier le champ chiffré_password de la table des utilisateurs et de mettre un nouveau mot de passe crypté. P>
Vous pouvez générer un nouveau mot de passe crypté sur ce site: http://www.bcrypt-generator.com/ p>
Si vous essayez d'avoir un moyen facile d'authentifier un compte d'utilisateurs pour déboguer quelque chose, c'est un excellent moyen! N'oubliez pas de sauvegarder leur mot de passe crypté pour sauvegarder quand vous avez terminé. :: Étapes que j'ai prises - u = user.find (: id) - u.crypted_password - Mot de passe en magasin quelque part - u.password = "nouveau_password" - u.save - problème de débogage - u.crypted_password =: stocké_crypted_password: - u.save