アラフォーからのプログラミングとデザイン

大人から始めたプログラミングとデザインについてのあれこれ

Railsチュートリアル復習中:ログイン機能を作る

f:id:simpledancer:20171225153757p:plain

今日はログイン機能を作っていきます。

ログインの基本的な仕組みとは、ブラウザがログインしている状態を保持し、ユーザーによってブラウザが閉じられたら状態を破棄するといった仕組み (認証システム (Authentification System))です。この認証システムの基盤が出来上がったら、ログイン済みのユーザー (current user) だけがアクセスできるページや、扱える機能などを制御していきます。なお、このような制限や制御の仕組みを認可モデル (Authorization Model) と呼び、例えば本章で実装するログイン済みかどうかでヘッダー部分を切り替える、といった仕組みもこれにあたります。

セッション 

railstutorial.jp

ユーザーログインの必要なWebアプリケーションでは、セッション (Session) と呼ばれる半永続的な接続をコンピュータ間 (ユーザーのパソコンのWebブラウザとRailsサーバーなど) に別途設定します。セッションはHTTPプロトコルと階層が異なる (上の階層にある) ので、HTTPの特性とは別に (若干影響は受けるものの) 接続を確保できます。 

 まずはsessionsコントローラを生成します。

 $ rails generate controller Sessions new

(rails generateでnewアクションを生成すると、それに対応するビューも生成されます。createやdestroyには対応するビューが必要ないので、無駄なビューを作成しないためにここではnewだけを指定しています)

f:id:simpledancer:20171226113007p:plain

ルーティング

config/routes のファイルにルーティングを書きます

f:id:simpledancer:20171226113534p:plain

get log inとpost login とdelete logoutの3行を追加しました。

そしてtest/controllers/sessions_controller_test.rbに新しいログイン用の名前付きルートを使うようにする必要があります 

f:id:simpledancer:20171226143524p:plain

これでルーティングはできたようです。

Viewを整える

見た目部分を整えます。ログインフォームの見栄えを作っていきます。

ログインフォームの見た目は最初の登録フォームの見た目とほぼ変わりなく。

simpledancer.hatenablog.com

emailとパスワード入れる欄、createボタンの代わりにlog inボタンがあり、

新規登録の場合は登録画面に移動するリンクが作られているようなものにします。

app/views/sessions/new.html.erbのコードを登録フォームの時と同じようにformforヘルパーを使って書きます 

f:id:simpledancer:20171226145900p:plain

サーバーを立ち上げてloginアドレスに変えて表示してみると

f:id:simpledancer:20171226145644p:plain

こんな感じで2つ(email.password)ラベルと ログインボタン、リンクが生成されました。

 

続く!

全然関係ありませんが、今出張中で昨夜(クリスマス)仕事から帰ってきてこんなのを食べながらブログを書いてました。

f:id:simpledancer:20171226013840j:plain

でも。脳にいいのかちょっとよくわからない。どちらかというと細かくて食べにくかったですwただ、糖質を取るよりも眠気冷ましになるかとは思います。ローソンでかいました。味は三種類ですがわさび目が覚めそうで買ってみました。(地方限定かも)