質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

Q&A

解決済

1回答

2218閲覧

Rails ブラウザを閉じてもセッションが破棄されません(Railsチュートリアル)

tktk2580

総合スコア8

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

0グッド

1クリップ

投稿2020/03/06 23:27

前提・実現したいこと

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/ツールのバージョンなど)

試行錯誤したのですが、現在の知識では解決できない状況です。
簡単なミスかもしれませんが、ご回答よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ブラウザーウィンドウが閉じられると期限切れになる(ユーザーをログアウトする)一時セッションであると想定されています。

これはブラウザやそれの設定にもよるのですが、ブラウザを閉じてもセッションが残るものがあります。
確か、Chromeは残ったような気がします。

投稿2020/03/09 00:48

Mugheart

総合スコア2349

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問