我在新的Rails安装上遇到以下错误.我运行bundle install并在安装了一堆宝石之后,在尝试安装bcrypt-ruby时遇到错误.我正在使用一台全新的Mac OS X 10.8.2,最新的Ruby(v1.9.3-p194),新的Rails(v3.2.8)和标准的Gemfile.
安装activerecord(3.2.8)
安装activeresource(3.2.8)
使用本机扩展安装bcrypt-ruby(3.0.1)
Gem :: Installer :: ExtensionBuildError:错误:无法构建gem原生扩展.
Run Code Online (Sandbox Code Playgroud)/Users/me/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb creating Makefilemake compiling bcrypt_ext.c make:/usr/bin/gcc-4.2:没有这样的文件或目录:* [bcrypt_ext.o]错误1
Gem文件将保留在/Users/me/.rvm/gems/ruby-1.9.3-p194@mygemset/gems/bcrypt-ruby-3.0.1中进行检查.结果记录到/Users/me/.rvm/gems/ruby-1.9.3-p194@mygemset/gems/bcrypt-ruby-3.0.1/ext/mri/gem_make.out安装bcrypt-ruby时出错(3.0 .1),而Bundler无法继续.
gem install bcrypt-ruby -v '3.0.1'在捆绑之前确保成功.
更新:忘记提及,不仅是这款Mac OS X 10.8.2的全新Mac,还有昨天安装的全新Xcode和命令行工具.然后我安装了RVM和brew.
我是Rails 4开发和轨道的新手.我红色官方"入门指南"指南,其中显示如何创建博客.所以我想从0注册,auth系统做我自己的.
在创建新用户时,我收到此错误.我不明白我做错了什么.有什么建议?
Git回购:https: //github.com/pumpurs/auth
UsersController中的ActiveRecord :: UnknownAttributeError#创建未知属性:密码
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(params[:user].permit(:password, :email, :password_confirmation))
end
private
def user_params
params.require(:user).permit(:password, :email, :password_confirmation)
end
end
Run Code Online (Sandbox Code Playgroud)
型号文件:
class User < ActiveRecord::Base
before_save :encrypt_password
validates_confirmation_of :password
validates_presence_of :password, :on => :create
validates_presence_of :email
validates_uniqueness_of :email
def enrypt_password
if password.present?
self.password_salt = BCript::Engine.generate_salt
self.password_hash = BCript::Engine.generate.hash_seret(password, password_salt)
end
end
end
Run Code Online (Sandbox Code Playgroud) 当我尝试运行时, heroku run rake db:migrate我收到此错误:
can't activate bcrypt-ruby (~> 3.0.0), already activated bcrypt-ruby-3.1.2. Make sure all dependencies are added to Gemfile.
我更新了我的Gemfile并指定了bcrypt的版本但是没有用.一切都在正确的分支上.
的Gemfile:
source 'https://rubygems.org'
ruby '2.0.0'
#ruby-gemset=railstutorial_rails_4_0
gem 'rails', '4.0.0'
gem 'sass-rails', '4.0.1'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.1'
gem 'jquery-rails', '3.0.4'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'
gem 'bootstrap-sass', github: 'thomas-mcdonald/bootstrap-sass', branch: '3'
gem 'bcrypt-ruby', '~> 3.1.2'
group :development, :test do
gem 'sqlite3', '1.3.8'
gem 'rspec-rails', '2.13.1'
end
group :test do
gem 'selenium-webdriver', '2.35.1'
gem 'capybara', '2.1.0' …Run Code Online (Sandbox Code Playgroud) 我们需要使用Ruby来针对现有的用户数据库授权用户.用户的密码都是使用password_compat PHP库生成的.所有哈希密码都以$ 2y开头.
我一直在使用bcrypt-ruby来尝试验证用户,但我没有找到任何成功.
#This user's password is "password"
irb(main):041:0> g = BCrypt::Password.new("$2y$10$jD.PlMQwFSYSdu4imy8oCOdqKFq/FDlW./x9cMxoUmcLgdvKCDNd6")
=> "$2y$10$jD.PlMQwFSYSdu4imy8oCOdqKFq/FDlW./x9cMxoUmcLgdvKCDNd6"
irb(main):042:0> g == "password"
=> false
irb(main):044:0> g.version
=> "2y"
irb(main):045:0> g.cost
=> 10
irb(main):046:0> g.salt
=> "$2y$10$jD.PlMQwFSYSdu4imy8oCO"
irb(main):047:0> g.hash
=> -219334950017117414
Run Code Online (Sandbox Code Playgroud)
我对bcrypt或加密一般都不是很熟悉.bcrypt-ruby可以处理$ 2y吗?我查看了源代码,但我认为不可以.这是底层操作系统的故障(我使用OS X)?
我是 Ruby on Rails ans 的新手,所以我正在学习 Rails 4 敏捷 Web 开发教程。所以用户可以登录,为此我在文件 user.rb 中使用了 has_secure_password:
class User < ActiveRecord::Base
has_secure_password
validates :name, presence: true, uniqueness: true
end
Run Code Online (Sandbox Code Playgroud)
但是当我运行服务器时,我收到错误:
cannot load such file -- 2.0/bcrypt_ext
Run Code Online (Sandbox Code Playgroud)
这是应用程序跟踪
app/models/user.rb:2:in `<class:User>'
app/models/user.rb:1:in `<top (required)>'
app/controllers/users_controller.rb:7:in `index'
This error occurred while loading the following files:
bcrypt
bcrypt_ext
2.0/bcrypt_ext
Run Code Online (Sandbox Code Playgroud)
我在 gemfile 中包含 gem 'bcrypt-ruby', '~> 3.0.0' 但它仍然不起作用。
我在类似的问题中读到它与“捆绑安装”有关,但我无法解决问题。
提前致谢
我正在构建一个简单的注册页面。
这是我的用户模型及其验证和关联:
class User < ApplicationRecord
has_secure_password
has_many :posts
has_many :comments
has_many :likes
validates :username, presence: true, uniqueness: true
validates :password, presence: true, length: { minimum: 6 }
end
Run Code Online (Sandbox Code Playgroud)
这是我的用户迁移:
class CreateUsers < ActiveRecord::Migration[6.0]
def change
create_table :users do |t|
t.string :name
t.string :username
t.string :password_digest
t.integer :age
t.integer :years_in_the_labor
t.string :title
t.string :location
t.string :ministry
t.timestamps
end
end
end
Run Code Online (Sandbox Code Playgroud)
这也是我的用户控制器创建方法:
def create
@user = User.new(name: params[:name], title: params[:title], username: params[:username], password: [:password])
if @user.valid?
@user.save
render json: { status: …Run Code Online (Sandbox Code Playgroud) 我是 Rails 和 React 新手,这可能是一个简单的问题,但我似乎无法弄清楚。
我正在尝试使用 ruby on Rails 和 React 作为客户端来实现简单的 jwt 身份验证。我按照以下建议的步骤进行操作: https://www.pluralsight.com/guides/token-based-authentication-with-ruby-on-rails-5-api
它在我的本地系统上按预期工作,但是当我将应用程序上传到heroku时,它总是返回错误:500。所有其他“发布”和“获取”请求正常工作。仅当我尝试进行身份验证并取回 auth_token 时,才会遇到 500 错误。
这是请求格式帖子:localhost:3001/api/authenticate
与身体:
{
"email": "evin@xyz.com",
"password": "evin"
}
Run Code Online (Sandbox Code Playgroud)
我通过使用 get 来验证这些数据在 heroku 上是否可用,效果非常好。
我已经花了两天多的时间来解决这个问题。网上有关此身份验证的信息非常少。有很多关于使用 auth0 的建议。但我在这种形式的身份验证方面找不到太多帮助。
这就是我所拥有的
#Path: /app/controllers/application_controller.rb
class ApplicationController < ActionController::API
before_action :authenticate_request
attr_reader :current_user
private
def authenticate_request
@current_user = AuthorizeApiRequest.call(request.headers).result
render json: { error: 'Not Authorized' }, status: 401 unless @current_user
end
end
#Path: app/controllers/api/authentication_controller.rb
class Api::AuthenticationController < ApplicationController
skip_before_action :authenticate_request
def authenticate
command = AuthenticateUser.call(params[:email], params[:password]) …Run Code Online (Sandbox Code Playgroud)