LoginSignup
1
0

More than 3 years have passed since last update.

ログイン機能を実装する

ログイン機能では、ユーザーがログインするためのフォーム画面を表示し、そこから送られてきた情報を元に
ユーザーを認証する。さらに、ログアウトも提供する。

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

ジェネレータによってコントローラやビューが作られてルーティングも自動的に定義される。

config/routes.rb

Rails.application.routes.draw do
  get 'sessions/new'

しかし今回は、ログインフォームを表示するアクションのURLは/loginにしたいので以下の設定に書き直します。

config/routes.rb

Rails.application.routes.draw do
  get '/login', to: 'sessions#new'

これでログインフォームを表示するアクションのURLが/loginになった。
次はhtml.slimファイルを編集して画面にログインフォームを表示するようにします。

app/views/sessions/new.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'

これでログインフォーム画面の作成が完了しました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0