【发布时间】:2015-10-01 04:05:43
【问题描述】:
在 Rails 中,我为用户身份验证实现了以下代码(确认是正确的)。但是,我想确认我对这个奇怪的session[:session_token] 的想法。这是存储在浏览器中的“cookie”吗?
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
helper_method :current_user, :signed_in?
private
def current_user
@current_user ||= User.find_by_session_token(session[:session_token])
end
def signed_in?
!!current_user
end
def sign_in(user)
@current_user = user
session[:session_token] = user.reset_token!
end
def sign_out
current_user.try(:reset_token!)
session[:session_token] = nil
end
def require_signed_in!
redirect_to new_session_url unless signed_in?
end
end
到目前为止,我对其工作原理的理解是,每当浏览器/客户端向 rails 发送请求时,cookie(带有session[:session_token])也会被发送过来,从而允许current_user 方法找到用户。我的理解正确吗?这对我来说很奇怪,因为当我们在 ApplicationController(Rails 端)中声明它时,浏览器/客户端如何访问会话 cookie 存在知识空白。
【问题讨论】:
标签: ruby-on-rails session cookies