今日はログイン機能を作っていきます。
ログインの基本的な仕組みとは、ブラウザがログインしている状態を保持し、ユーザーによってブラウザが閉じられたら状態を破棄するといった仕組み (認証システム (Authentification System))です。この認証システムの基盤が出来上がったら、ログイン済みのユーザー (current user) だけがアクセスできるページや、扱える機能などを制御していきます。なお、このような制限や制御の仕組みを認可モデル (Authorization Model) と呼び、例えば本章で実装するログイン済みかどうかでヘッダー部分を切り替える、といった仕組みもこれにあたります。
セッション
ユーザーログインの必要なWebアプリケーションでは、セッション (Session) と呼ばれる半永続的な接続をコンピュータ間 (ユーザーのパソコンのWebブラウザとRailsサーバーなど) に別途設定します。セッションはHTTPプロトコルと階層が異なる (上の階層にある) ので、HTTPの特性とは別に (若干影響は受けるものの) 接続を確保できます。
まずはsessionsコントローラを生成します。
$ rails generate controller Sessions new
(rails generateでnewアクションを生成すると、それに対応するビューも生成されます。createやdestroyには対応するビューが必要ないので、無駄なビューを作成しないためにここではnewだけを指定しています)
ルーティング
config/routes のファイルにルーティングを書きます
get log inとpost login とdelete logoutの3行を追加しました。
そしてtest/controllers/sessions_controller_test.rbに新しいログイン用の名前付きルートを使うようにする必要があります
これでルーティングはできたようです。
Viewを整える
見た目部分を整えます。ログインフォームの見栄えを作っていきます。
ログインフォームの見た目は最初の登録フォームの見た目とほぼ変わりなく。
emailとパスワード入れる欄、createボタンの代わりにlog inボタンがあり、
新規登録の場合は登録画面に移動するリンクが作られているようなものにします。
app/views/sessions/new.html.erbのコードを登録フォームの時と同じようにformforヘルパーを使って書きます
サーバーを立ち上げてloginアドレスに変えて表示してみると
こんな感じで2つ(email.password)ラベルと ログインボタン、リンクが生成されました。
続く!
全然関係ありませんが、今出張中で昨夜(クリスマス)仕事から帰ってきてこんなのを食べながらブログを書いてました。
でも。脳にいいのかちょっとよくわからない。どちらかというと細かくて食べにくかったですwただ、糖質を取るよりも眠気冷ましになるかとは思います。ローソンでかいました。味は三種類ですがわさび目が覚めそうで買ってみました。(地方限定かも)