成果物の作成5 新規ユーザー登録機能とセッションの実装
ユーザ登録周りは一回やっているので割とスムーズに作れました。
業務ではチーム開発になると思われるので、作業用ブランチからプルリクを出して、Githubでマージする、という手法を試したのですが、 途中ででやらかして、マージの時にコードが消えちゃうやらかしが発生して大分焦りました。。。
何とか元に戻す方法を調べて、無事復旧できました…これも勉強ですね。
一回学習した部分なので大まかなコーディングは覚えていますが、なんとなくの理解だった部分が更に分かって楽しいです。
例えば永続的セッションの実装で以下の部分ですが
cookies.permanent.signed[:user_id] = user.idで
上のように暗号化され、永続化されたcookiesのユーザIDだけでも永続的ログインは成立しうるのですが、
更に暗号化された記憶トークンcookies[:remember_token]とデータベースのremember_digestとで認証チェックを行います。
cookiesのユーザIDと、cookiesの記憶トークンとで、2つの情報を認証に使っているのかというと
もしユーザーIDの認証だけだと万一悪意のある人にユーザーIDが盗まれた場合はログインできてしまうのです。
よってセキュリティ的にこうして2重のチェックを入れたほうがよりベターなので、このように実装します。