ruby-on-rails - ruby on Rails, session 过期通知

标签 ruby-on-rails ruby session

我正在使用 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/

相关文章:

ruby-on-rails - 不包含 spec_helper 的测试在 rspec 运行中被忽略

ruby - Selenium Ruby 绑定(bind)功能文档

ruby - 动态语言——我应该选择哪一种?

ruby - 在 Ruby 中,如何从具有值的哈希中提取键

node.js - 使用session和node.js检查用户是否登录

php - 尝试使用 $_SESSION ['bandname' 将乐队名称附加到 mp3 上传];

php - session_destroy 没有取消设置 session_id

ruby-on-rails - 如何实现应该返回技能的方法

html - Ubuntu 服务器 14.04 上的 Rails,未加载应用程序布局

java - 通过 Tomcat 配置将变量传递给 JRuby 应用程序