プログラミング

[Rails・User]コントローラーのログインチェック

こんにちは、Nanayakuです。

今回は、ログインしていないユーザーがURLを直接入力して、他人のページへの移動を防ぐログインチェックの書き方を紹介します。

ログインチェック | Rails Training」を参考にしました。

login_checkメソッドの作成

自分はユーザーのログインなどのメソッドを下記のように定義しました。

これらのメソッドの詳しい解説は、「ログイン機能を追加」で解説しています。

 

ログインしているかどうかを確認するメソッド「login_check」を自分は下記のように書きました。

これは、@current_userがnilだった場合、rootにリダイレクトされ、その時に「ログインしてください」とアラートが表示されると言う意味です。

他のcontroller(user・micropostなど)でも「login_check」が使用できるように「helper_method」に書き足します。

app/controllers/application_controller.rbは、最終的に以下のようになります。

 

users_controllerに定義

edit・update・show・destroyページにアクセスした時、そのuserがログインしているか確認するためにbefore_actionに「login_checkメソッド」を書きます。

「before_action」は、指定したアクションが行われる前に、発動するアクションを設定できます。

今回の場合は、edit・update・show・destroyアクションが行われる前に、そのユーザーはログインしているかを確認します。

only」はアクションを指定するのに使用します。

これを書いていないと新規登録などが行えなくなります。

 

補足

helper_method で「login_check」を定義しているので、users_controller以外でも、「users_controllerに定義」のように書けば指定できます。

 

最後に

備忘録がわりに作ったので、間違っている所とかあったら、コメントくれると嬉しいです。

-プログラミング
-

Copyright© Nanayaku blog , 2019 All Rights Reserved Powered by AFFINGER5.