【復習】sorceryのメソッドまとめ、及びログインとは
sorceryについて
・sorcery
とは:Railsで認証機能を実装してくれるメソッドをまとめてくれたgem
・暗号化されたパスワード(crypted_pasword
)とsalt
カラムのデータはユーザーに直接閲覧や編集をさせたくないから、viewで使用できない。
⇨crypted_pasword
に対応する仮想的な属性(password
, password_confirmation
)をviewに使用する
⇨password
属性はカラムに対応してないので、入力された情報がデータベースには保存されない
login
メソッド: login(user, password)
のように引数を2つとり、引数の情報と合致するデータベースのユーザーをセッション状態にする。(第一引数はemailといったユーザーを特定するもの、第二引数はpassword
といったcrypted_pasword
に対応する属性?)
logout
メソッド: ユーザーのセッション状態を解除する。
require_login
メソッド: ログイン状態を要求するメソッド。検証用(before_action)に使用する。
not_authenticated
メソッド: ログインが認証されなかった際にroot_pathに遷移するメソッド。上書き可能。
logged_in?
メソッド: ログイン状態かを検証するメソッド。内部でcurrent_userメソッドが使用されている。
redirect_back_or_to
メソッド: フレンドリーフォワーディング(ログインが必要なページ(ページA)に未ログイン状態でアクセスした場合に、ログインページに遷移させてログイン後にページAに戻す機能)を実装するためのメソッド
セッションとCookieについて
Cookieとは
:ブラウザ側で保存される小さな情報、または領域
セッションとは
:サーバー側で一時的に保存される小さな情報、または領域
ステートレスは
:前後の繋がりで状態を保持してないこと。HTTPリクエストがこれに当たる
ログインとは
:ユーザーの情報をセッションやCookieに保存させておいて、異なるHTTPリクエストに繋がりを持たせること
form_withについて
・form_withとは
:form_tag
とform_for
両方の特徴を兼ね備えたフォーム生成ヘルパー
・モデルに紐づくフォームを生成する時
form_with model: モデルから生成されたインスタンス(@object) do |f| フォーム内容 end
モデルから生成されたインスタンスに対して、persisted?
メソッドの返り値がfalse
の場合create
アクションに、true
ならupdate
アクションに送る。その時、インスタンスの生成元のモデルと同名のコントローラのアクションに自動で遷移するようにパスを生成してくれる。
・モデルに紐づかないフォームを生成する時(create, updateを行うコントローラとモデルが紐づかない場合も)
form_with url: "パス名"(login_path), method: :メソッド名'(get) do |f| フォーム内容 end