Сессия не уничтожается при закрытии браузера - RailsTutorial.org
Работая через railstutorial.org Майкла Хартла, я нахожусь в главе 8 (в частности, 8.2.3). В настоящее время проблема заключается в реализации сеанса для обеспечения входа пользователя в систему в нескольких представлениях, но функциональность, реализованная в этом разделе, должна бытьвременный сеанс, который истекает (выходит из системы), когда окно браузера закрыто. Вот выписка из учебника с указанием такого:
Если вы полностью выйдете из браузера, вы также сможете проверить, что приложение забывает ваш статус входа, требуя, чтобы вы снова вошли в систему, чтобы увидеть изменения, описанные выше.
Я протестировал эту функциональность как в Google Chrome, так и в Firefox - я успешно вошел в систему, перешел на несколько страниц (чтобы убедиться, что мой сеанс сохраняется после перенаправления log_in), а затем закрыл браузер - но когда я перезагружаю веб-приложение, Я все еще вошел в систему. Я скопировал весь кодименно так как написано в тексте, но безрезультатно. Для справки, вот мойsessions_helper.rb
файл:
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
А вот мойsessions_controller.rb
файл (destroy
действие еще не реализовано, так как я не дошел до того, что в тексте даю кнопке «Выйти» какие-либо функции):
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
конец
Замечания: В вашем ответе пожалуйстане делайте предложите добавить альтернативный код или изменить существующий код (если только вы не видите ошибку в коде, который я разместил). Учебник предполагает, что это рабочий код и не нуждается в каких-либо изменениях для его правильной работы.