ログイン
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(有効期限)の値について調べてみてくだい。
ブラウザセッションの終了時 と書いてあった。