- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道 has_secure_password 在 :create 操作上添加了对 password 和 password_confirmation 的验证。
创建新用户时,必须输入密码(并确认),否则用户无效。这是预期的行为,这很好。
当您想要更新用户时,您可以更新选择属性而无需提交密码/确认。这也很好,因为我可以更新用户名而无需密码。
但是,我遇到了一种情况,我想更新用户的密码,我要求用户输入他们当前的密码,然后输入他们的新密码并进行确认。问题是当我只输入当前密码并提交表单时,它通过了所有验证。尽管这可能是预期的行为,但我认为这是一种非常糟糕的行为,因为即使密码通过了所有验证,它也不会更改为空白值。如果我只是假设代码实际上做了它“说”的事情,那么用户现在应该有一个空白密码。
class User < ActiveRecord::Base
# model has password_digest field
has_secure_password
# has_secure_password automatically adds the following...
# validates :password, presence: true, on: [:create]
validates :password, length: { minimum: 8 }
end
class SettingsController < ApplicationController
# POSTed from form with fields :current_password, :new_password, :new_password_confirmation
def update_password
if current_user.authenticate(params[:current_password])
if current_user.update_attributes(password: params[:new_password], password_confirmation: params[:new_password_confirmation])
flash.now[:notice] = "Successfully updated Password"
else
# Problem with new password (do nothing)
flash.now[:error] = "Invalid new password or confirmation (nothing changed)"
render "error"
end
else
flash.now[:error] = "Must provide current password to change your password"
render "error"
end
end
end
validates :password, length: ( minimum: 8 }, if: -> { password.present? }
validates :password, length: ( minimum: 8 }, allow_nil: true
最佳答案
当且仅当密码和 password_confirmation 为空时,有一个验证允许密码为空。因此,如果您尝试更新密码并且不发送密码确认,则会引发错误。
尝试这个:
validates :password, length: { minimum: 8 }, allow_blank: true
关于validation - Rails 4 'has_secure_password' 验证空白密码,无法执行条件验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22336657/
我正在尝试向 password 添加长度验证,但它总是出错并显示“密码太短”。 a = Artist.new(artist_name: 'Dylan', email: 'dylan@example.c
是否可以在 bcrypt-ruby (has_secure_password) gem 中关闭密码确认? 最佳答案 将密码 验证更改为仅在创建 操作中起作用。 validates :password,
我正在尝试使用 mongoid 而不是事件模型来使用 rails 3.1 身份验证 class User include Mongoid::Document include ActiveMo
我的应用程序允许人们使用密码或通过 Facebook 进行注册。 即使我从我的用户模型中删除密码验证,我也会得到 :password_digest => ["can't be blank"]在用户模型
我想使用has_secure_password在数据库中存储加密密码。我在互联网上找不到 has_secure_password 是否使用任何形式的加盐。如果使用盐腌,它是如何工作的?谁能帮我澄清一下
我正在使用 Robert Reiz 的指南 here关于在 Rails 4 中使用 has_secure_password 为用户模型生成安全密码哈希。我已经生成了模型和 Controller ,页面
has_secure_password在 Rails 中,通过检查 :password 可以很好地注册用户和 :password_confirmation然后记录 :password_digest数据
我在新应用程序中使用 has_secure_password,它在本地运行良好。但是,当我部署到我们的服务器并尝试运行它时,我收到以下错误消息: undefined local variable or
我正在做 Rails tutorial by Michael Hartl ,我已经到了你只需添加的地步: has_secure_password 到你的模型类,一堆神奇的事情发生了。 据我所知,此方法
我有 4 个与用户模型关联的表单,这就是我希望它们的行为方式 - 注册(新)- 需要密码 - email, name, password, password_confirmation 编辑设置(编辑)
我有一个带有has_secure_password 的用户授权的rails 项目。因此,密码存储在数据库中作为加密密码。 现在我想添加以下内容: 用户将能够将其当前密码更改为新密码,并且此新密码也必须
在使用 Rails 4.x 中的 has_secure_password 功能时获取密码不能为空: 这是我的文件: Gemfile 有并且我做了捆绑安装: gem '密码' 这是表格 creat
在使用 Rails 4.x 中的 has_secure_password 功能时获取密码不能为空: 这是我的文件: Gemfile 有并且我做了捆绑安装: gem '密码' 这是表格 creat
我正在尝试跟随 Michael Hartl 的 Ruby on Rail 一书,我在第 10 章,试图允许用户编辑他们的配置文件设置,这是最奇怪的错误 - bcrypt 的 password_dige
我遵循了 Railscast episode 250 revised to create user authentication with has_secure_password 这很好用。但是,当我
晚上好。我有个问题。我正在使用 has_secure_password并且导致我有一个错误 undefined methodpassword_digest=' for #`, 但是我没有这个方法!!请
在我的应用中,只有管理员可以创建新的用户记录。用户会通过电子邮件收到一个激活链接,他们可以在其中设置密码。 我想使用 has_secure_passord 方法 ( railscast ): clas
我知道 has_secure_password 在 :create 操作上添加了对 password 和 password_confirmation 的验证。 创建新用户时,必须输入密码(并确认),否
我在一个项目中工作,用户可以拥有 admin: true/false。该应用程序只会让管理员用户登录系统,其他用户只是客户端,其设置只有管理员可以编辑。这是某种商务应用程序。(Rails 3.2.13
在 Rails 4 应用程序中——尝试在控制台中创建简单用户时出现此错误。 RuntimeError: Password digest missing on new record 我的模型、 C
我是一名优秀的程序员,十分优秀!