Ruby on rails 在测试环境中使用Rails验证user.authenticate()时出现意外行为
我想对登录流进行验收测试,但我遇到了Ruby on rails 在测试环境中使用Rails验证user.authenticate()时出现意外行为,ruby-on-rails,authentication,activemodel,bcrypt-ruby,Ruby On Rails,Authentication,Activemodel,Bcrypt Ruby,我想对登录流进行验收测试,但我遇到了user.authenticate方法的意外行为 开发环境中的身份验证按预期工作:带有电子邮件和普通密码对的帖子可以完美地传递身份验证。当我运行测试时会出现问题:使用普通密码的身份验证失败。但奇怪的是,它成功地使用了密码的哈希值 代码如下: class sessioncontroller
user.authenticate
方法的意外行为
开发环境中的身份验证按预期工作:带有电子邮件和普通密码对的帖子可以完美地传递身份验证。当我运行测试时会出现问题:使用普通密码的身份验证失败。但奇怪的是,它成功地使用了密码的哈希值
代码如下:
class sessioncontroller
以下是不同环境的日志:
env开发
密码123456
--- !ruby/object:User
env测试
密码123456
---错误
env测试
密码$2a$10$70AlnpaXIMHtjDUei/1HU.OSEG4WVjW6ens3jzN04bC8SOxTv2Ftm
--- !ruby/object:User
知道我该怎么做才能在测试环境中使用普通密码成功进行身份验证吗
我正在使用bcryptruby
作为ActiveModel对象中的密码
谢谢。这里:
factory :user do
first_name "Gustav"
password { BCrypt::Password.create("123456") }
end
您正在为给定字符串创建密码摘要。将其更改为:
password "123456"
password_confirmation { password }
让BCrypt创建摘要。测试中用户是如何创建的?它可以是users.yml中的fixture,也可以是FactoryGirl生成的对象。在测试数据库中,密码哈希始终是一个bcrypt产品。john:first_name:john password_digest:$2a$10$R1kxWTCTO/u3ysbew6wro4b2bfpcflktytt2htbll1yf4pzeskg#123456factory:user do first_name“Gustav”password{bcrypt::password.create(“123456”)}@BroiSatse刚刚看到了它。是否引用Fixture的密码摘要和FactoryGirl generator的密码才是万恶之源?我马上查。