【復習】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_tagform_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