Ruby on rails Authlogic忽略密码参数
Authlogic在创建新用户时似乎忽略了密码参数。以下是我的用户\控制器类:Ruby on rails Authlogic忽略密码参数,ruby-on-rails,ruby,authlogic,Ruby On Rails,Ruby,Authlogic,Authlogic在创建新用户时似乎忽略了密码参数。以下是我的用户\控制器类: class Api::V1::UsersController < ApplicationController def create @user = User.new(user_params) respond_to do |format| if @user.save format.json { render :json => @user, :status
class Api::V1::UsersController < ApplicationController
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
format.json { render :json => @user, :status => :created}
else
format.json { render :json => @user.errors, :status => :unprocessable_entity }
end
end
end
private
def user_params
params.require(:user).permit(:username, :email, :password)
end
end
我正在使用最新的authlogic和Ruby 2/Rails 4。尝试一下:-
acts_as_authentic do |config|
config.check_passwords_against_database = false
config.validate_password_field = false
config.crypted_password_field = false
end
看一看Rails日志的摘录:
{"email"=>"someemail@website.com", "password"=>"[FILTERED]", "username"=>"myUser", "user"=>{"username"=>"myUser", "email"=>"someemail@website.com"}}
看起来您发送的参数有点错误。要被Authlogic识别,password
参数应位于user
键入参数散列下。也就是说,Rails日志中的行应该如下所示(注意字符串的末尾):
要修复它,您可以进行如下操作:
private
def user_params
params.require(:user).permit(:username, :email).merge(:password => :password)
end
或者,您可以调整从客户端发送的参数(例如,在发送
HTTP POST
请求时,使用user[password]
参数的名称,而不仅仅是password
。允许创建用户,但不需要密码。我需要我的用户有一个密码。
{"email"=>"someemail@website.com", "password"=>"[FILTERED]", "username"=>"myUser", "user"=>{"username"=>"myUser", "email"=>"someemail@website.com"}}
{"email"=>"someemail@website.com", "password"=>"[FILTERED]", "username"=>"myUser", "user"=>{"username"=>"myUser", "email"=>"someemail@website.com", "password" => "[FILTERED]"}}
private
def user_params
params.require(:user).permit(:username, :email).merge(:password => :password)
end