Ruby on rails 如何使用RubyonRails创建用户和登录/注销会话
我是rails的新手,我正在尝试构建一个简单的网站,它需要创建能够登录和注销的用户 但是当创建用户时,我得到 UsersControllercreate中的ArgumentError 1的参数2的数目错误 当我尝试登录到我得到的位置时也会发生这种情况 SessionControllerCreate中的ArgumentError 1的参数2的数目错误 有没有关于如何解决这个问题的想法? 用户的模型如下所示Ruby on rails 如何使用RubyonRails创建用户和登录/注销会话,ruby-on-rails,login,Ruby On Rails,Login,我是rails的新手,我正在尝试构建一个简单的网站,它需要创建能够登录和注销的用户 但是当创建用户时,我得到 UsersControllercreate中的ArgumentError 1的参数2的数目错误 当我尝试登录到我得到的位置时也会发生这种情况 SessionControllerCreate中的ArgumentError 1的参数2的数目错误 有没有关于如何解决这个问题的想法? 用户的模型如下所示 Class User < ActiveRecord::Base attr_access
Class User < ActiveRecord::Base
attr_accessor :password
#validation for password on creation.
validates :password, :presence => true,
:confirmation => true,
:length => {:within => 6..40},
:on => :create
#validation for password on update, forget password option
validates :password, :confirmation => true,
:length => {:within => 6..40},
:on => :update
validates :user_name, presence: true,
uniqueness: true
validates :status, presence: true
before_save :encrypt_password
def encrypt_password
if password.present?
self.password_salt = BCrypt::Engine.generate_salt
self.password_hash = BCrypt::Engine.hash_secret(password, password_salt)
end
end
def self.authenticate(user_name, password)
user = find_by_user_name(user_name)
if user && user.password_hash == BCrypt::Engine.hash_secret(password, user.password_salt)
#authenticate
user
else
# la2 :(
nil
end
end
end
以及用户控制器:
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
redirect_to root_url, :notice => "Signed up!"
else
render "new"
end
end
private
def user_params
params.require(:user).permit(:user_name, :status, :password, :password_confirmation)
end
end
关于会议,它没有模型
其中,会话控制器如下所示:
class SessionsController < ApplicationController
def new
end
def create
user = User.authenticate(params[:user_name], params[:password])
if user
session[:user_id] = user.id
redirect_to root_url, :notice => "Logged in!"
else
flash.now.alert = "Invalid email or password"
render "new"
end
end
def destroy
session[:user_id] = nil
redirect_to root_url, :notice => "Logged out!"
end
end
一般来说,使用自己的安全机制是个坏主意
我强烈建议您在保存之前检查回拨,密码似乎为空