我开始使用Sorcery进行身份验证,并且想知道是否有办法从数据库中返回解密的密码?当尝试返回密码时,Rails返回 nil 。这甚至与Sorcery宝石有关,还是Rails的东西?其他属性工作正常,例如可以检索电子邮件地址,但不能检索密码。
有什么建议吗?感谢。
答案 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
用户。如果我错了,请纠正我。