【发布时间】:2015-06-03 23:37:24
【问题描述】:
我对 Rails 完全陌生,我知道在 StackOverflow 上已经存在很多关于这个问题的问题,但我尝试了几乎所有的解决方案,但没有一个解决方案对我有用。
我正在尝试使用 has_secure_password 在我的 rails 项目中实现身份验证,并且我遵循了 rails 文档中提到的所有步骤。 提交创建用户表单后,即使我在输入框中输入密码并确认密码值,我也会收到“密码不能为空”错误消息。
如果我遗漏了什么,请提出建议。
我遵循的步骤是- 1) 在 gem 文件中添加以下行 - 宝石'bcrypt',要求:'bcrypt' 2)捆绑安装 3) 我的型号代码-
class User < ActiveRecord::Base
validates :name, presence: true, uniqueness: true
has_secure_password
end
4) 我的视图代码 -
<div>
<%= f.label :name %>:
<%= f.text_field :name, size: 40 %>
</div>
<div>
<%= f.label :password, 'Password' %>:
<%= f.password_field :password, size: 40 %>
</div>
<div>
<%= f.label :password_confirmation, 'Confirm' %>:
<%= f.password_field :password_confirmation, size: 40 %>
</div>
<div>
5) 我的控制器代码 -
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
format.html { redirect_to users_url,notice: "User #{@user.name} was successfully created." }
format.json { render :show, status: :created, location: @user }
else
format.html { render :new }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
【问题讨论】:
-
你用的是什么bcrypt版本?
-
3.1.7 甚至我都试过没有指定任何版本
-
您的
user_params是否将password和password_confirmation?列入白名单 -
不..我该怎么做?
-
您的
user_params方法应该将password和password_confirmation都传递给permit方法调用。如果您将该方法添加到您的问题中,那就太好了。
标签: ruby-on-rails ruby authentication