Tag: bcrypt ruby

Rails 4 – 仅在当前密码正确时才允许更改密码

在我的应用中,用户可以编辑他们的个人资料信息 在编辑配置文件表单上,用户可以更改所有字段(名称,标题等)。 在同一表单上有三个字段: current_password , password和password_confirmation 。 我使用bcrypt的has_secure_passwordfunction进行密码validation。 我根本不使用Devise。 我希望用户只有在提供了正确的当前密码后才能更改密码。 我之前在使用Users控制器的update方法中使用了以下代码: # Check if the user tried changing his/her password and CANNOT be authenticated with the entered current password if !the_params[:password].blank? && !@user.authenticate(the_params[:current_password]) # Add an error that states the user’s current password is incorrect @user.errors.add(:base, “Current password is incorrect.”) else # Try to update […]

安装bcyrpt-ruby gem bundle时出错

我正在尝试安装Devises gem,运行bundle install然后使用bcrypt-ruby获取此错误,这是我之前没有的。 我能做什么? Installing bcrypt-ruby (3.0.1) with native extensions Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb creating Makefile make xcrun cc -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin11.0 -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin11.0 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -fno-common -arch i386 -arch x86_64 -g -Os -pipe -fno-common -DENABLE_DTRACE -fno-common -pipe -fno-common -c bcrypt_ext.c Error: No developer directory found at /Developer. Run /usr/bin/xcode-select […]

在rails 4应用程序上使用安全密码

我正在尝试使用has_secure_password进行用户登录,我已经将用户模式定义如下 require ‘digest/md5’ class User < ActiveRecord::Base has_secure_password before_validation :prep_emailId before_save :create_avatar_url validates :emailId, presence: true, uniqueness: true, format: { with: /\A(|(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6})\z/i } validates :first_name, presence: true has_many :projects belongs_to :nationality belongs_to :category scope :sorted, lambda{order("projects.position ASC")} scope :newest_first, lambda{ "projects.created_at DESC"} scope :oldest_first, lambda{order("projects.created_at ASC")} scope :search, lambda{|query| where(["name LIKE?", "%#{query}%"]) } private def […]

使用bcrypt生成的Rails密码是否可移植?

我有一个现有的Web应用程序,有几千个用户,我正在移植到Rails。 当我重写和重构这个应用程序时,我可能需要在任意数量的不同服务器上运行它以进行开发,测试和生产。 我在我的用户模型中使用Rails的内置has_secure_password方法,但我担心密码数据的可移植性。 我需要将数据库的内容从一台机器移动到另一台机器,以便在不同的环境中进行测试,并且非常重要的是我可以在每个环境中使用相同的用户和密码集测试用户身份validationfunction。 到目前为止,很容易找到关于bcrypt-ruby如何与Rails has_secure_password一起工作的答案,但经过数周的搜索后,我还没有找到一个明确的答案。 如果has_secure_password导致WorkFactor + Salt + HashedPassword连接并保存到password_digest数据库列,那么如果移动到任何其他计算机(假设任何其他计算机在类Unix操作系统上运行Rails),那么可以重新生成该哈希并进行可靠比较吗? 或者换句话说 – 使用Rails的has_secure_password生成的bcrypt-ruby密码has_secure_password可移植? 跟进问题 :如果盐总是随机生成的(我看到相同的密码使用不同的哈希值,所以我不认为盐是从密码本身的文本创建的)那么Rails应用程序将如何能够可靠地生成在登录表单上重新提交密码,并将其与数据库中的密码进行比较。 显然,为了比较它,它必须首先知道盐是什么。 它是如何做到的?