我是红宝石的新手。我试图创建一个登录页面。但是我收到了这个错误。
这是我的编码 -
users_controller.rb
def login
@title = 'Login'
render layout: 'login'
end
def create_login
#user = User.find_by(username: params[:user][:username].downcase).first
user = User.where("username = ?", params[:user][:username].downcase).first
if user && user.authenticate(params[:user][:password])
# Log the user in and redirect to the user's show page.
log_in @user
redirect_to @user
else
flash[:danger] = 'Invalid email/password combination' # Not quite right!
render 'new'
end
end
router.rb
get 'login' => 'users#login'
post 'login' => 'users#create_login'
sessions_helper.rb
def log_in(user)
session[:user_id] = user.id
end
user.rb
class User < ActiveRecord::Base
validates :name, presence: true
validates :name, length: { minumum:2, maximum: 30 }
#validates :password, presence: true
#validates :password, length: { in: 6..20 }
validates :password, :presence =>true,
:length => { :minimum => 6, :maximum => 40 },
:confirmation =>true
#validates_presence_of :password_confirmation, if: :password_changed?
#validates_uniqueness_of :username
#validates :email, confirmation: true
validates :username, :presence => true,
:uniqueness => { :case_sensitive => false }
email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, :presence => true,
:format => { :with => email_regex },
:uniqueness => { :case_sensitive => false }
validates :dob, presence: true
#dob_regex = /\d{2}\-\d{2}\-\d{4}/
#validates :dob, :presence => true, :format => { :with => dob_regex }
end
答案 0 :(得分:1)
您关注的教程使用bcrypt
gem。检查它是否在gemfile
和bundle install
上。
对于身份验证方法,请参阅railscasts using bcrypt
中的本教程railscast身份验证方法的一部分:
def self.authenticate(email, password)
user = find_by_email(email)
if user && user.password_hash == BCrypt::Engine.hash_secret(password, user.password_salt)
user
else
nil
end
end
答案 1 :(得分:0)
在user
模型中,您需要添加has_secure_password
和
将bcrypt (~> 3.1.7)
添加到Gemfile
以使用has_secure_password
:
gem 'bcrypt', '~> 3.1.7'
和
class User < ActiveRecord::Base
#your other code
has_secure_password
end
现在可以访问authenticate
方法
在您提及link of the book时,您可以看到您错过了它。
转到第6章
代码清单6.39:安全密码的完整实现。绿色 应用程序/模型/ user.rb **