Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在测试环境中使用Rails验证user.authenticate()时出现意外行为_Ruby On Rails_Authentication_Activemodel_Bcrypt Ruby - Fatal编程技术网

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的密码才是万恶之源?我马上查。