0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

今更ながら Ruby on Rails Tutorial をやってみた (その8)

Posted at

この記事について…

普段は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のインスペクター機能を起動します。ウェブ開発メニューの中にあります。

1.png

インスペクターパネルが起動するので、その中のストレージタブを選んで開きます。
その中でcookiesの情報を調べることができるのです。

2.png

ここまで準備できたら作成中のWebページにアクセスします。
図のように_sample_app_sessionという名前のcookiesがあるはずです。これが「ブラウザからcookiesの情報を調べてみてください。」ということかと思います。

3.png

「sessionの値はどうなっているでしょうか?」という問いについては、図の通り暗号化された値が保存されている、ということになります。
user_idが平文で保存されているわけでは決してありません。

「Expiresの値」については「セッション」という値が保存されています。Expires=有効期限、です。

ブラウザを再起動させるとこのcookiesは削除されるのですが、インスペクター機能から確認しようとしても作成中のWebページにアクセスした時点で新たなcookiesが作成されています。
なので、作成中のWebページにアクセスする前にFirefoxのプライバシーとセキュリティ設定からWebページ毎のcookies情報を見てみましょう。
下の図を参考に[データを管理]ボタンを押下します。

4.png

作成中のWebページで検索すると1件のサイトに絞られると思います。
このサイトのCookieの値が0ならcookiesは削除されているし、1であればcookiesが存在することを確認することができます。
cookiesを削除したい場合は[選択したサイトデータを削除]ボタンや[表示されたサイトデータをすべて削除]ボタンを押下して削除してやればいいです。ログイン中に削除すれば、非ログイン状態に戻る様子を確認することができます。

5.png

8.3の演習で「ログアウト後にはsessionが正常に削除されていることを確認してみましょう。」というものがありますが、ログアウトしたからといって_sample_app_sessionという名前のcookiesが削除されるわけではありません。
今回の実装ではuser_idの値を削除しているだけなので、user_idの値を削除した後の暗号化された値がsessionの値として残り続けるのです。
従って、この演習を厳密にやろうとすると「暗号化されたsessionの値を複合して、user_idの値が正しく削除されていることを確認する」ということになるのかなぁと解釈しています。

それでは、次回 第9章から再開したいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?