sorceryの説明
少しsorceryを勉強する機会があったので いい機会なのでまとめてみる。 (ざっくりとなので、不充分なところが多々あるのはご了承ください。)
DB
00テーブル。 crypted_password パスワード流出を防ぐための暗号化されたパスワード unique:true 重複を防ぐ。
ルーティング
get 'login' getリクエスト ログインページ post 'login' postリクエスト ログインするという動作
コントローラ
require_login ログインを強制する。 def create (params[:email],params[:password]) (ユーザーが入ってきたemailやpassword) if @user redirect_back_or_to root_path # trueならこっちに入る。 else render:new #@userがnilだった場合(間違ったメールやパスワード) end
ビューファイル
ログインのフォームに関してはモデルと紐づかないので (ユーザーと紐づくと思われがちだが、あくまでも「ログイン/セッション」 というリソースに紐づくとという考え方) form_with model:@userのようにする必要はない ただ、フォームの送信先は/loginになって欲しいので url(URL): login_pathの指定をします。
sorceryに関するメソッド 基本的に親玉のapplication_controller.rbにつける。
before_action :require_login not_authenticated ログインしてなかった場合に呼ばれるメソッド ex 「ログインしていなければフラッシュメッセージ」 「ログインしてなければこのページにリダイレクトする」 logged_in? ログインしているかどうか
もしgemを使わない場合 current_userをどう表現するのか?
current_userとは? <span style="color: #ff5252">ログインしているユーザーのインスタンス</span> def current_user User.find_by(id:session[:user_id]) end Userテーブルからfindしてセッションの中のuser_idをもとに検索する
参照: pikawaka.com