我正在使用 ruby 1.9.3 和 Rails 3.2。
我的实际 session 处理如下所示:
session 助手
def sign_in(user)
cookies[:remember_token] = {value: user.remember_token, expires: 20.minutes.from_now.utc}
self.current_user = user
end
def sign_out
self.current_user = nil
cookies.delete(:remember_token)
end
def signed_in?
if current_user.nil?
return false
else
cookies[:remember_token] = {value: current_user.remember_token, expires: 20.minutes.from_now.utc}
end
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
应用程序 Controller
class ApplicationController < ActionController::Base
before_filter :check_signin
protect_from_forgery
include SessionsHelper
def check_signin
unless signed_in?
redirect_to signin_path
end
end
end
如果 session 已过期,我想通知用户@登录页面。如何检查 session 是否已过期?请给出代码示例。
最佳答案
由于您的 Cookie 将在 20 分钟后过期,因此您无法区分新用户和 session 已过期的用户。一个快速但肮脏的解决方案是测试 Google Analytics Cookie 是否存在,以了解用户的 session 是否已过期。
def check_signin
unless signed_in?
flash[:notice] = "Your session has expired" if cookie['_utma']
redirect_to signin_path
end
end
关于ruby-on-rails - ruby on Rails, session 过期通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13934267/