サインイン機能(ログイン画面)の実装

ログイン機能を実装していく。

- ユーザー名とパスワードを入力し本人確認をすることで、専用画面へ。
- 最後のログインから時間が経つと勝手にログアウト。

コントローラ名 => sessions
ログイン画麺   => new
送信先0        => create
ログアウト       => destroy
# Route定義(ログイン機能)
ログイン画面へのリンク作成
Controller(アクション)定義
View(テンプレート)実装
ログイン機能(ログイン処理)の作成

-　認証機能のライブラリであるsorceryをbundle installしたことによって使えるようになったメソッド。
- ログイン処理をしてくれる。
- 引数はそれぞれ、ユーザーが入力したメールアドレスとパスワード。
- メールアドレスとパスワードが合致しなかった場合は、このコードではelse節の方に処理が進みむ。

- 「ちょっとしたお手軽データベース」みたいなもの。
- アクセスしてきたクライアントごとに情報を持たせる事ができるのが特徴。
- ログイン処理をする上では、セッションを利用することがキモ。
-
loginメソッドは、セッションに「アクセスしてきたクライアントのユーザーIDは1234」というふうに覚えさせているので、ログイン状態を維持できる。

- セキュリティ上の理由から、クライアントが自由に読み書きできては駄目。
- サーバー側にセッション用のデータ置き場を作成して、ユーザーが自由に変更できなくするのが基本。

- セッションの保存先として、ブラウザに搭載された小さいデータベースのような保存場所。
- Rails 4は標準ではこのクッキーにセッション情報を保存している。
- クッキーは保存先がクライアント側なので、自由に開いて中身を閲覧する事ができてしまう。セキュリティ的に相当危険だが、下記対策をされている。
  1. 暗号化した状態で保存。
  2. 開いて中身を見ることはできるが、鍵なしでは意味不明な文字列となっている。
  3. 無理やり書き換えると壊れるようにしてある。
  * 保存先はクライアント側だか読み書きをさせないようにし安全性を保証している。
  * Railsでは、クッキーにセッションを保存する方法ではなく、別のデータベースに保存するように設定を変更する事が可能。