この記事について…
普段はRuby on Railsと無縁なプログラマなんですが、今更ながら面白そうという単純な理由からRuby on Rails Tutorialをやってみようと思い立ちました。今回は前回の記事の続きで第8章をやっていきます。
尚、Rails 5.1に対応した第4版を用いて、かつVagrantを使用した環境でHyper-V上にインストールしたUbuntu 18.04の環境で進めていきます。
今までVagrantを使用した環境で進めていたのですが、コーディングはホストOSで行ってRailsコマンドはゲストOSで実行して…と使い分けするのが面倒になってしまい、Windows10 ProでHyper-Vを使ってみたに記載した方法でHyper-V上にインストールしたUbuntu 18.04の環境で今後進めることとしました。
前回の記事のように、ゲストOSとホストOS間の共有フォルダを起因とするエラーが出るのも避けられますしね。
ただ、Vagrantを使用した環境は気軽にTutorialをやってみることができるので、おすすめなことに変わりはありません!
第8章 基本的なログイン機構
この章ではユーザーがログインやログアウトを行えるように実装をします。こちらもWebアプリケーションでほぼほぼ存在する機能ですね。
第8章ではRailsメソッドのsession
を使用して一時セッションを、第9章ではRailsメソッドのcookies
を使用して長続きするセッションを作成します。
cookiesは結局どうなっていたらいいの?
途中の演習で「ブラウザからcookiesの情報を調べてみてください。」というものがあります。
cookiesの調べ方はブラウザ毎に異なるので、ヒントにある通りググってみればいいかと思います。
でも「結局どうなっていればいいの?」って思う人、いると思うんですよね。
自分がUbuntu 18.04にプリインストールされているFirefox(Ver.65.0.1)で確認したことは以下の通りです。
確認方法と合わせて書いてみます。
まず、作成中のWebページにアクセスする前にFirefoxのインスペクター機能を起動します。ウェブ開発メニューの中にあります。
インスペクターパネルが起動するので、その中のストレージタブを選んで開きます。
その中でcookiesの情報を調べることができるのです。
ここまで準備できたら作成中のWebページにアクセスします。
図のように_sample_app_session
という名前のcookiesがあるはずです。これが「ブラウザからcookiesの情報を調べてみてください。」ということかと思います。
「sessionの値はどうなっているでしょうか?」という問いについては、図の通り暗号化された値が保存されている、ということになります。
user_idが平文で保存されているわけでは決してありません。
「Expiresの値」については「セッション」という値が保存されています。Expires=有効期限、です。
ブラウザを再起動させるとこのcookiesは削除されるのですが、インスペクター機能から確認しようとしても作成中のWebページにアクセスした時点で新たなcookiesが作成されています。
なので、作成中のWebページにアクセスする前にFirefoxのプライバシーとセキュリティ設定からWebページ毎のcookies情報を見てみましょう。
下の図を参考に[データを管理]ボタンを押下します。
作成中のWebページで検索すると1件のサイトに絞られると思います。
このサイトのCookie
の値が0ならcookiesは削除されているし、1であればcookiesが存在することを確認することができます。
cookiesを削除したい場合は[選択したサイトデータを削除]ボタンや[表示されたサイトデータをすべて削除]ボタンを押下して削除してやればいいです。ログイン中に削除すれば、非ログイン状態に戻る様子を確認することができます。
8.3の演習で「ログアウト後にはsessionが正常に削除されていることを確認してみましょう。」というものがありますが、ログアウトしたからといって_sample_app_session
という名前のcookiesが削除されるわけではありません。
今回の実装ではuser_idの値を削除しているだけなので、user_idの値を削除した後の暗号化された値がsessionの値として残り続けるのです。
従って、この演習を厳密にやろうとすると「暗号化されたsessionの値を複合して、user_idの値が正しく削除されていることを確認する」ということになるのかなぁと解釈しています。
それでは、次回 第9章から再開したいと思います。