Session wird beim Schließen des Browsers nicht zerstört - RailsTutorial.org

In der Arbeit mit Michael Hartls railstutorial.org bin ich in Kapitel 8 (speziell 8.2.3). Das aktuelle Problem besteht darin, eine Sitzung zu implementieren, damit der Benutzer in mehreren Ansichten angemeldet bleibt. Die in diesem Abschnitt implementierte Funktionalität soll jedoch ein @ sei temporär Sitzung, die abläuft (den Benutzer abmeldet), wenn das Browserfenster geschlossen wird. Hier ist die Aussage aus dem Lehrbuch, die auf Folgendes hinweist:

Wenn Sie Ihren Browser vollständig verlassen, sollten Sie auch überprüfen können, ob die Anwendung Ihren Anmeldestatus vergisst. Sie müssen sich erneut anmelden, um die oben beschriebenen Änderungen zu sehen.

Ich habe diese Funktion sowohl in Google Chrome als auch in Firefox getestet. Ich habe mich erfolgreich angemeldet, zu mehreren Seiten navigiert (um sicherzustellen, dass meine Sitzung über die log_in-Umleitung hinaus bestehen bleibt) und dann den Browser geschlossen. Beim erneuten Laden der Web-App , Ich bin immer noch angemeldet. Ich habe den gesamten Code kopiertgena wie im Text geschrieben, aber ohne Erfolg. Als Referenz ist hier meinsessions_helper.rb Datei

module SessionsHelper

  # Logs in the given user.
  def log_in(user)
    session[:user_id] = user.id
  end

  # Returns the current logged-in user (if any).
  def current_user
    @current_user ||= User.find_by(id: session[:user_id])
  end

  # Returns true if the user is logged in, false otherwise.
  def logged_in?
    !current_user.nil?
  end

end

nd hier ist meinsessions_controller.rb Datei (dasdestroy action wurde noch nicht implementiert, da ich im Text noch nicht an den Punkt gekommen bin, an dem ich der Schaltfläche "Abmelden" eine Funktion gegeben habe):

class SessionsController < ApplicationController

  def new
  end

  def create
    user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      # Log the user in and redirect to the user's show page.
      log_in user
      redirect_to user
    else
      flash.now[:danger] = 'Invalid email/password combination' 
      render 'new'
    end
  end

  def destroy
  end

End

Hinweis In Ihrer Antwort (en), bitteunterlassen Si schlagen vor, alternativen Code hinzuzufügen oder vorhandenen Code zu ändern (es sei denn, Sie sehen einen Fehler mit dem von mir veröffentlichten Code). Das Lehrbuch geht davon aus, dass dies ein funktionierender Code ist und keine Änderungen erforderlich sind, damit er ordnungsgemäß funktioniert.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage