如何使用Sorcery gem从Rails中的DB返回解密的密码?

时间:2015-07-24 08:35:08

标签: ruby-on-rails ruby-on-rails-4 encryption sorcery

我开始使用Sorcery进行身份验证,并且想知道是否有办法从数据库中返回解密的密码?当尝试返回密码时,Rails返回 nil 。这甚至与Sorcery宝石有关,还是Rails的东西?其他属性工作正常,例如可以检索电子邮件地址,但不能检索密码。

有什么建议吗?感谢。

1 个答案:

答案 0 :(得分:4)

使用bcrypt gem构建的法术以及OpenBSD使用的密码哈希算法。您无法从模型的列中获取纯密码,只能将字符串和加密的哈希值与valid_password?进行比较。

  

valid_password?调用配置的加密提供程序来比较提供的   密码与加密密码。

bcrypt如何工作的示例:

require 'bcrypt'

my_password = BCrypt::Password.create("my password") #=> "$2a$10$vI8aWBnW3fID.ZQ4/zo1G.q1lRps.9cGLcZEiGDMVr5yUP1KUOYTa"

my_password.version              #=> "2a"
my_password.cost                 #=> 10
my_password == "my password"     #=> true
my_password == "not my password" #=> false

my_password = BCrypt::Password.new("$2a$10$vI8aWBnW3fID.ZQ4/zo1G.q1lRps.9cGLcZEiGDMVr5yUP1KUOYTa")
my_password == "my password"     #=> true
my_password == "not my password" #=> false

我不是sorcery用户。如果我错了,请纠正我。