LoginSignup
0
0

More than 1 year has passed since last update.

railsチュートリアル第八章 ログイン

Posted at

ログイン

Sessionsコントローラを生成した時点で既にセッション用ヘルパーモジュールも自動生成されています
Railsのセッション用ヘルパーはビューにも自動的に読み込まれます。
どのコントローラでも使えるようになります
実際にログイン中の状態での有効な値の送信をフォームで正しく扱えるようにします。

ApplicationコントローラにSessionヘルパーモジュールを読み込む

app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  include SessionsHelper
end

log_inメソッド

事前定義済みのsessionメソッドを使って、単純なログインを行えるようにします
sessionメソッドで作成された一時cookiesは、ブラウザを閉じた瞬間に有効期限が終了

log_inメソッド

app/helpers/sessions_helper.rb

module SessionsHelper

  # 渡されたユーザーでログインする
  def log_in(user)
    session[:user_id] = user.id
    # sessionメソッドで作成した一時cookiesは自動的に暗号化される。
    # ユーザーのブラウザ内の一時cookiesに暗号化済みのユーザーIDが自動で作成
  end
end

ユーザーにログインする

app/controllers/sessions_controller.rb

class SessionsController < ApplicationController

  def new
  end

  def create
    user = User.find_by(email: params[:session][:email].downcase)
    # 送信されたメアドを使ってデータベースから取り出す。
    #emailを小文字にする
    if user && user.authenticate(params[:session][:password])
    # user  取得したユーザーが有効かどうか?
    # その後にデータベース上にパスワードがあるか?
    # ユーザーログイン後にユーザー情報のページにリダイレクトする
      log_in user
      # ユーザーのブラウザ内の一時cookiesに暗号化済みのユーザーIDが自動で作成
      redirect_to user
      # 名前付きルート/userのビューを表示する
    else
      flash.now[:danger] = 'Invalid email/password combination'
      # flash.nowでリクエストが発生後メッセージを消滅する
      # エラーメッセージを作成する
        render 'new'
        # newアクションのビューを表示
    end
  end

  def destroy
  # ユーザー削除
  end
end

演習

1.有効なユーザーで実際にログインし、ブラウザからcookiesの情報を調べてみてください。このとき、sessionの値はどうなっているでしょうか? ヒント: ブラウザでcookiesを調べる方法が分からない? 今こそググってみるときです!(コラム 1.2)

どういう意味かはわからないが、確認できた。

2.先ほどの演習課題と同様に、Expires(有効期限)の値について調べてみてくだい。
ブラウザセッションの終了時 と書いてあった。

0
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
0
0