困ったときのメモ ver.2.0

主に Ruby on Rails のメモ。など。

ユーザー認証とセットで。

いろいろ遊んで見たけど、結局はシンプルにということで。悩まなくていいようにリッチにいくぜ!
サーバが重い、、、っていうほどでもないよね。

作業環境

OS Windows Vista
ruby 1.8.7
rails 3.0.7
IDE Aptana Studio 3


Basic認証のやり方はできたので、つづいて通信経路の暗号化を。

はじめに

「http://〜」な通信は外から丸見えなので、せっかく認証の仕組みを用意してもまるごと盗み見されてしまいます。ということで、通信経路まるごと暗号化して外から見えなくします。通信経路が暗号化されるとアドレスバーには「https://〜」と表示されます。

とりあえずリッチなやり方。Josh PeekさんがつくったGem「Rack::SSL」を使う。

すべてのアクセスを暗号化してしまおう。秘密のパスワードも、どうでもいいページの表示も、とにかくまるごと。すべて飲み込め!

1.
「Gemfile」に以下を追記。(Gemfileはプロジェクトのディレクトリ直下にある)

gem 'rack-ssl'

rack-sslを使うよー。ということ。

2.
Terminalで以下のコマンドを実行

bundle install

このコマンドで、Gemfileに書かれたGemがプロジェクトに追加される。

3.
「config/environments/production.rb」を開いて、末尾に次の2行を追記。

require 'rack/ssl'
config.middleware.insert_before ActionDispatch::Cookies, Rack::SSL

「config/environments/production.rb」は本番環境のことを指し、実際にWebアプリを公開するときはこちらを使う。ちなみに、普段の開発作業で使っているのは「development.rb」の方。ちなみに「test.rb」はテスト環境。
なぜ3つもあるかというと、単純に分けといたほうが都合がいいよねってこと。(本番で動いてたらバグ修正のために止めるなんてできないよね!とか、ダミーデータchunkybaconとかって試したりするから)あとは、ソースコードの修正をすぐ反映したり、実行速度を上げたり、・・・ていう差異がある。

開発環境でも試してみたけりゃ「development.rb」にも同じように書く。ってか、「config/application.rb」に書いとけばすべての環境で読み込まれるんだけどなー。

コードの中身は、、
rack-ssl読み込むよー。
通信経路を暗号化するよー。ついでにセッションクッキーも守るよー。

4.
サーバを環境にあわせて起動する。

rails server                         #開発環境でサーバ起動(いつもの)
rails server -e production           #本番環境でサーバ起動(公開用)

ブラウザを起動して確認。・・・すると

とりあえず、アドレスが「https://〜」に強制されてることを確認できたらOKだと思うよ。
「heroku」に上げてしまえばSSLアドオンも無料だよ。(クレジットカードの登録が必要だけど)

どうしても自分のPCでやりたいなら、WEBrickサーバにSSLを設定すればいいんだけどねー。

参考
http://www.nearinfinity.com/blogs/chris_rohr/configuring_webrick_to_use_ssl.html
http://d.hatena.ne.jp/LukeSilvia/20071016/1192554033
http://d.hatena.ne.jp/elm200/20070428/1177752908

おしまい。

あー、認証まわりやってて色々思うので、次のお題は「管理者用」と「一般公開用」の画面の作り方について書いてみる予定。がっつりプログラマなら、namespaceだろうけど、、、お手軽に。モットーは「最小限のコード記述で」ってことで。