前提・実現したいこと
rails初心者です。
Railsチュートリアルの第8章(8.2.3)にいます。このセクションで実装される機能は、ブラウザーウィンドウが閉じられると期限切れになる(ユーザーをログアウトする)一時セッションであると想定されています。
現在の問題は、正常にログインしたあと、ブラウザを閉じてもログアウトされることなく、常にログインした状態のままであります。
参考のために sessions_helper.rb、及びsessions_controller.rbを添付します。
ruby
1module SessionsHelper 2 def log_in(user) 3 session[:user_id] = user.id 4 end 5 def current_user 6 if session[:user_id] 7 @current_user ||= User.find_by(id: session[:user_id]) 8 end 9 end 10 def logged_in? 11 !current_user.nil? 12 end 13 14end 15
ruby
1class SessionsController < ApplicationController 2 3 def new 4 end 5 6 def create 7 user = User.find_by(email: params[:session][:email].downcase) 8 if user && user.authenticate(params[:session][:password]) 9 log_in user 10 redirect_to user 11 else 12 flash.now[:danger] = 'Invalid email/password combination' 13 render 'new' 14 end 15 end 16 17 def destroy 18 end 19end
試したこと
調べた結果、config/initializers/session_store.rbファイルに以下が必要だという記事を見つけました。
ruby
1Rails.application.config.session_store :cookie_store, key: '_sample_session', expire_after: nil
そもそも、config/initializers/session_store.rbファイルがなかったため作成し上記のコードを記入しました。
また、session_keyはconsoleで以下の操作により取り出しました。
console
1 $ rails c 2Running via Spring preloader in process 18865 3Loading development environment (Rails 5.1.6) 4>> Rails.application.config.session_options[:key] 5=> "_sample_session"
補足情報(FW/ツールのバージョンなど)
試行錯誤したのですが、現在の知識では解決できない状況です。
簡単なミスかもしれませんが、ご回答よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。