rails使用has_secure_password进行身份验证

作者在 2022-10-19 23:43:38 发布以下内容
生成模型
rails g model User username:string email:string password_digest:string
在user模型加入has_secure_password
class User < ApplicationRecord
  has_secure_password
end
作者在 2022-10-19 23:43:57 补充以下内容
出处:https://riptutorial.com/ruby-on-rails/example/10923/has-secure-password
作者在 2022-10-28 22:08:22 补充以下内容
更多参考:https://blog.csdn.net/lissdy/article/details/73779686
作者在 2022-10-28 22:09:29 补充以下内容
加上 has_secure_password 就不用做确认密码的验证了,User模型会自动验证,自己只需要加一个密码最短长度的验证,典型的模型如下:
class User < ApplicationRecord
  has_secure_password

  validates :password, :length => { :minimum => 6, :too_short => '密码至少6位' }
end
提交的时候需要加一个 password_confirmation 字段
user = User.new
user.username = 'admin'
user.password = '111111'
user.password_confirmation = '111111'
user.save

作者在 2022-10-29 00:16:32 补充以下内容
验证密码:
User.find_by(username: 'admin')&.authenticate('111111')
rails 7.1 新加了一个 authenticate_by 方法,验证更方便
User.authenticate_by(username: 'admin', password: '111111')

这两种验证方法,成功后都会返回查询到的 user 对象本身,失败返回false,所以判断是否登陆成功可以加一个 .present? 方法
User.find_by(username: 'admin')&.authenticate('111111').present?
  puts '登陆成功'
end

Ruby | 阅读 1085 次
文章评论,共0条
游客请输入验证码
浏览2895066次
文章归档
最新评论
  • 静夜思:-1是多核
  • 时光拾荒者:CtrlCV还是强的😝
  • 硬识岩丝:解决了,太感谢了~