【Rails】ログイン機能を一から作る【DIVE INTO CODE】

更新日:

「DIVE INTO CODE」学習記録 14日目

こんにちは。

14日目。ブログアプリにログイン機能を実装する。

学習内容

【Login】

  • ログインシステム作成について
  •  メールアドレスのユニーク制約
  • 小文字の処理(.downcase!)
  • テーブルにインデックスを追加する(add_indexメソッド)
  • セキュアパスワード手法
  • パスワードのハッシュ化(has_secure_passwordメソッド)
  • password_digestカラム
  • authenticateメソッド
  • bcryptのインストール
  • セッションとcookiesについて
  • sessionメソッド
  • モデルがない場合のform_withメソッドの使い方
  • フラッシュメッセージ
  • ログインメソッド(session[:user_id] = user.id)
  • 自己代入演算子(||=)の利用
  • ログイン前と後で表示が変わるヘッダーの作成
  • ログアウトの実装(destroyアクション)
  • ステートレスとステートフルの概念
  • ログインシステム課題(ログインしていなければ特定のアクションができない仕様)

 

感想

今回はログインシステムです。

サービス作るにあたって必ず知っとかなければならない内容です。

 

前の会社で個人情報の管理については嫌ってほど注意させられてました。

ログインシステムなんてまさに個人情報の取り扱いかなと。自分で管理するってなったらマジでちゃんと把握しておかないと、取り返しのつかないことになるなって思いながら勉強してました。

今回は見慣れないメソッドがたくさん出てきて理解するのに時間かかりました。

ログインシステムはrailsの方でそれ用にメソッド用意してくれてるので、こっちはそれを理解して利用すれば大丈夫かなって感じです。

 

セッションとクッキーとかもなんとなく今まで聞いたことある言葉でしたが、具体的にどういう意味で何が違うのかとか初めて知りました。

 

ログイン保持にはセッション情報に残す必要があり、そのためにsessionコントローラをrails gする。sessionにはモデルがなく、モデルのクラスを使って変数に格納したり、情報を渡すことができない。だからペルパーメソッドを定義してコントローラに渡す。

 

最近結構内容が難しくなってきました。

テキストを必ず読み返すようにしてます。

 

1回目と2回目だと読んだときの理解度が全然違ってきます。

2回目読むと1回目では何となく理解していたところが結構すんなり理解できたりします。

1回目は余裕ないんですよねきっと、ほぼほぼ全内容わかんないことだらけなんですから。

 

今回課題も考えさせられました。

今思うと簡単なんですけど。

 

「ログインしていなければ特定のアクションができない仕様」

 

をメソッド定義しなければならなくて。

 

ログインのメソッドを理解してないとこの定義作れなかったです。

ヒントは出てるんですけど。

 

2回目読んでやっと「ログインしている時」と「ログインしていない時」の変数の違いがどこに出てるか理解できて、

 

あとはその変数の違いで条件分岐のメソッド定義(その変数にログインが入っていればtrue、なければredirect_toでログイン画面に強制移動)、

からのbefore_actionとして定義したメソッドをコントローラの最初に付け加えれば、ログイン有無でのバリデーションが完成します。

 

前回までで作成したブログアプリにログインシステムを追加して提出しました。

blog_sample_loginsystem

 

ブログサンプルアプリメニュー

前回より項目が増えてパワーアップしてます。

ログインしていない状態で「Create」や「List」をクリックしても、

ログインのバリデーション

「ログインしてください」ってなりアクセスできません。

 

まあこんな感じです。

 

まだまだよくわかってないところも多いですが、

また近いうちに大課題でインスタの偽物作る課題が待ってて、そのときもログイン機能つけると思うんで、やりながら覚えます。

 

以上ありがとうございました。

 

-DIVE INTO CODE
-, , , ,

Copyright© s u p ? , 2019 All Rights Reserved.