问题标签 [bcrypt-ruby]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
368 浏览

ruby-on-rails - NameError Exception: uninitialized constant BCrypt Rails 5, Windows

I am using Devise with Rails 5 on Windows. I know about the problem with Windows and BCrypt and I am following the instructions from internet to make it work:

  1. uninstall all bcrypt gem versions with gem uninstall bcrypt and select option 3 (if exist);
  2. gem uninstall bcrypt-ruby and select option 3 (if exist);
  3. install bcrypt using gem install bcrypt --platform=ruby;
  4. add this line gem 'bcrypt', platforms: :ruby to Gemfile.

And I thinks it works, because Devise depends on BCrypt and Devise works fine.

The problem is when I use Byebug and use in the console BCrypt, I am getting an error:

NameError Exception: uninitialized constant users::PasswordsController::BCrypt

This is where it is byebug:

It is in the controller which inherits from Devise::PasswordsController and it just show the view.

For the example, if I type: BCrypt::Engine.generate_salt, I am getting that error.

0 投票
1 回答
429 浏览

ruby - 使用 BCrypt 进行密码验证

我正在尝试使用 BCrypt 构建一个非常简单的登录页面,其中包含用户名和密码身份验证。

有两个功能,第一个是创建用户名和密码,第二个是使用登录页面进行身份验证。(创建一个新用户,使用该用户登录)

下面是用于创建用户名和密码的控制器和用户模型代码。视图模型不包括在内,但它包括一个简单的表单,要求用户创建用户名、密码和确认密码

控制器:

模型:

在上面,创建了一个新实例来传递用户名和密码。如果密码和确认密码匹配,密码方法将创建一个加密密码,插入方法将使用简单的 SQL 命令将用户名和加密密码插入数据库。

将用户名和加密密码插入数据库后。我想使用登录页面进行验证。我创建了一个新的 User 实例,将用户名和密码参数传递给如下所示的身份验证方法。该方法将查找与 params 用户名对应的密码,并根据加密密码评估 params 密码。

下面是登录的控制器和用户模型

控制器:

模型:

上面,我试图从 SQL 中检索加密的密码(字符串格式),转换为 Bcrypt 对象并针对它验证密码。理论上,假设输入的密码正确,该方法应该返回 true,但它返回 false。

问题可能是什么?

0 投票
1 回答
280 浏览

ruby-on-rails - 使用 Rails 的 bcrypt LoadError

我无法找到解决此问题的方法,并且尝试了许多其他人遇到的修复,但均未成功。我正在研究 Michael Hartl 的 Ruby on Rails 5 教程,它需要使用 bcrypt 来实现该has_secure_password功能。当我运行测试时,我收到一条很长的错误消息,开头为:

我尝试卸载并重新安装 bcrypt,并--platform=ruby在最后添加并在 gemfile 中包含各种版本;gem 'bcrypt', '~> 3.1.7', 'bcrypt', '3.1.11', platforms: [:ruby, :x64_mingw]'bcrypt', '~> 3.1.7', platforms: [:ruby]包括从命令行安装 gem 文件的各种组合。从控制台安装时保留 gemfile 散列,仅使用 gemfile 链接卸载和运行捆绑安装。

这是我在尝试访问 Rails 控制台时收到的完整错误消息:

我正在使用 Ruby 2.3.3 版和在 Windows 7x64 上运行的 Rails 5.1.4 版。

在这一点上任何人都可以提供给我的任何见解将不胜感激。

更新

因此,经过无数小时尝试解决问题后,使用 gemfile:

是什么为我解决了这个问题。这可能不是一个永久的解决方案,但至少它让我继续前进!

0 投票
0 回答
109 浏览

ruby-on-rails - Ruby on Rails Devise Gem -> Devise::RegistrationsController#create 中的 LoadError

有人可以帮助我。

使用 Devise Gem 并按照说明进行操作 @ https://github.com/plataformatec/devise

见图片。当我注册时,我收到此错误。设计中的 LoadError::RegistrationsController#create

在此处输入图像描述

0 投票
1 回答
317 浏览

ruby-on-rails - 无法弄清楚如何让“bcrypt”在 ruby​​ on rails 中工作(WIN 10)

我几乎放弃了,在尝试了无数解决方案之后,直到现在对我来说没有任何效果。我在 Windows 10 64 位上运行 Ruby 2.3.3 和 rails 4.2.8 我已经使用 Rails Installer 安装了 Ruby、Rails 和 DevKit。我安装了 bcrypt v 3.1.7(以避免兼容性问题)

宝石列表 bcrypt

*当地宝石*

bcrypt (3.1.7 x86-mingw32)

我运行 rake db:migrate (我有一些种子)并得到这个 -

在此处输入图像描述

我已经尝试了很多解决方案。最流行的是卸载 bcrypt 并以这种方式安装 bcrypt - “gem install bcrypt --platform=ruby” 但是当我尝试这样做时,我收到了这个错误 -

在此处输入图像描述

我还尝试导航到安装和运行 gem 的文件夹 -

红宝石 extconf.rb

但这给了我一堆错误,基本上是说“你需要先安装开发工具”但是 RailsInstaller 已经安装了 Devkit。即使在我导航到 Devkit 文件夹并运行以下命令后,我也会收到错误 -

在此处输入图像描述

所以我将我的 Ruby 根目录添加到 config.yml - C:\RailsInstaller\Ruby2.3.​​3 并得到以下错误 -

在此处输入图像描述

这让我相信 DevKit 工具已经安装,但是当我运行 ruby​​ extconf.rb 时我仍然收到一个错误,说需要安装它们

我只想让 bcrypt 在我的机器上运行,有什么想法可以做吗?

0 投票
1 回答
372 浏览

ruby-on-rails - Rails 5:Gem bcrypt - 抛出错误“无法加载此类文件 - bcrypt”

我是 Rails 初学者。当我尝试使用 gem bcrypt 时,我在屏幕上看到一个错误“无法加载此类文件 - bcrypt”控件卡在模型的“has_secure_password”行。

服务器日志

宝石文件

我已经使用上述两种宝石一次执行一个。即使查看了许多博客和网站,我也找不到解决方案。

我可以毫无问题地启动我的 Rails 服务器,但无法在浏览器中打开我的视图。

有人可以帮忙吗。

0 投票
2 回答
3732 浏览

ruby-on-rails - 为什么 BCrypt 不再接受哈希?

上周我将 Fedora 升级到全新的 28 版本,它附带了 mongodb 升级到 3.6。请参阅升级到 Fedora 28 后如何修复 mongodb 服务?我如何设法解决我的第一个问题,即 mongod 将不再启动。现在我在使用同一个数据库的 Rails 应用程序上面临另一个问题。

这很可能与 mongodb 升级无关,但我认为提供该上下文可能值得,并且不要因为没有提供足够的上下文而错过解决方案。

因此,由于系统升级,此 Rails 项目上的任何登录尝试都会失败并出现错误,在初始化BCrypt::Errors::InvalidHash in Devise::SessionsController#create 时引发' `。bcrypt (3.1.11) lib/bcrypt/password.rb:60:in在项目的 Rails 控制台中进一步分析,似乎对该方法的任何调用都会失败:

我尝试bundle卸载/重新安装bcrypt,甚至使用 bcrypt gem 的 github 存储库版本,但它没有改变任何东西。

查看/home/psychoslave/.rbenv/versions/2.4.3/lib/ruby/gems/2.4.0/gems/bcrypt-3.1.11/lib/bcrypt/password.rb:60:in初始化'`,问题似乎是哈希无效。

对应的测试如下:

哈希本身是通过创建的BCrypt::Engine.hash_secret(secret, BCrypt::Engine.generate_salt(cost)),在我使用的平台中调用 call __bc_crypt(secret.to_s, salt),它似乎在调用bcrypt-3.1.11/ext/mri/bcrypt_ext.c

更重要的是binding.pry,在valid_hash?方法中添加 a ,可以看到调用返回的哈希值是什么BCrypt::Password.create('TestPassword'),它实际上是一个相当长的字符串,它的开头似乎很常见,但最终得到的最有可能是错误生成的序列:

如果可能有任何兴趣,我可以提供整个哈希的转储(大约 32Ko!)。

0 投票
3 回答
1008 浏览

ruby-on-rails - 在 Ubuntu 16.04 上安装 bcrypt (gcc: 错误:)

什么地方出了错?尝试gem install bcrypt, gem install bcrypt-ruby, 并得到相同的结果。由于此错误,无法在 ruby​​ on rails 中进行捆绑安装。

0 投票
1 回答
44 浏览

ruby-on-rails - 加载错误:bcrypt

我使用 ROR 平台创建了一个管理面板。现在每当我尝试登录时,我都会收到此错误:

无法加载此类文件 bcrypt_ext

我过去曾遇到过此错误,但曾经通过使用以下步骤卸载并重新安装它来纠正它:

  1. 关闭所有 Rails 服务器
  2. 卸载所有版本的 bcrypt
  3. 手动安装 v3.1.1 (gem install bcrypt --platform=ruby)
  4. 更新项目的gem文件

但这一次没有任何效果。我提到了很多链接,但没有一个帮助。

我正在使用 Windows 10、Rails 5.1.6 和 Ruby 2.3.3。

我已经使用 devise gem 进行登录功能,我的用户模型看起来像这样

管理员控制器

0 投票
2 回答
50 浏览

ruby-on-rails - Brcrypt 验证方法不适用于已经 brcypt 值

我有一个使用 brcypt gem 加密的用户模型。

但是,当我使用以下代码时,它会返回 false 作为结果。

但下面提到的命令工作正常:

它返回真。

那么当我需要验证已经存储在数据库中的密码时,如何实现第一个条件。

任何帮助,将不胜感激!!