0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Ruby on Rails】has_secure_passwordについて

Posted at

#はじめに
has_secure_passswordメソッドについてまとめてみた。

#has_secure_passwordとは
has_secure_passwordは、パスワードをハッシュ化(暗号化)してくれるメソッド。

このメソッドを使う為に以下二つを行う必要がある。
bcryptというgemを追加すること。
・データベースにpassword_digestというカラムを作成すること。

##使い方
以下のように、モデルファイルに定義する。

user.rb
class User < ApplicationRecord
~
~
~
 has_secure_password
end

##使える機能
・2つのペアの仮想的な属性が使えるようになる。(passwordpassword_confirmation
autheticateメソッドが使えるようになる。

###2つの仮想属性について
password属性
データベースに保存される。(仮想属性なので、テーブル上には見えない)

password_confirmation属性
データベースに保存されない仮想の属性で、パスワードの入力確認が行われる。
この属性を使用すると、password属性とpassword_confirmation属性の双方が一致しているかのバリデーションが自動的に追加されるようになっている。

補足
password_digest属性には、password属性に入れた値をハッシュ化した値を入れる。

###autheticateメソッドについて
authenticateメソッドはパスワードが一致しているかどうかを確認するメソッド。

001:0> user = User.find_by(email: "example.com")

002:0> user.password_digest  #パスワードのハッシュ値を確認する。ハッシュ化されていることを確認する。
=> "$2a$10$YmQTuuDNOszvu5yi7auOC.F4G//FGhyQSWCpghqRWQWITUYlG3XVy"

003:0>user.authenticate("not_the_right_password")  #間違ったパスワードを入力する
=> false

004:0>user.authenticate("foobar")  #正しいパスワードを入力する
=> #<User id: 1, name: "example_user", email: "exampleuser@example.com",
created_at: "2014-07-25 02:58:28", updated_at: "2014-07-25 02:58:28",
password_digest: "$2a$10$YmQTuuDNOszvu5yi7auOC.F4G//FGhyQSWCpghqRWQW...">

005:0>!!user.authenticate("foobar")  #頭に「!!」をつけることで論理値を取得する。
=> true
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?