ログイン機能を実装する
ログイン機能では、ユーザーがログインするためのフォーム画面を表示し、そこから送られてきた情報を元に
ユーザーを認証する。さらに、ログアウトも提供する。
Railsでログイン機能を実装する際は、ログインする=「セッションというリソースを作る」と捉えて、
SessionsControllerと言う名前でコントローラを作ることがよく行われる。
コントローラに追加したいアクションは
ログインフォームを表示する場合 HTTPメソッド・・・GET URL・・・/login アクション名・・・new
フォームから送られてきた
情報を元にログインを行う場合 HTTPメソッド・・・POST URL・・・/login アクション名・・・create
ログアウトを行う場合 HTTPメソッド・・・DELETE URL・・・/logout アクション名・・・destroy
ログインのフォームを表示する
SessionsControllerを作っていく。このときコントローラと一緒にnewアクションとビューも作る。
$ bin/rails g controller Sessions new
ジェネレータによってコントローラやビューが作られてルーティングも自動的に定義される。
Rails.application.routes.draw do
get 'sessions/new'
しかし今回は、ログインフォームを表示するアクションのURLは/loginにしたいので以下の設定に書き直します。
Rails.application.routes.draw do
get '/login', to: 'sessions#new'
これでログインフォームを表示するアクションのURLが/loginになった。
次はhtml.slimファイルを編集して画面にログインフォームを表示するようにします。
h1 ログイン
= form_with scope: :session, local: true do |f|
.form-group
= f.label :email, 'メールアドレス'
= f.text_field :email, class: 'form-control', id: 'session_email'
.form-group
= f.label :password, 'パスワード'
= f.password_field :password, class: 'form-control', id: 'session_password'
= f.submit 'ログインする', class: 'btn btn-primary'
これでログインフォーム画面の作成が完了しました。