`
hideto
  • 浏览: 2649403 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

每天一剂Rails良药之Keep An Eye On Your Session Expiry

    博客分类:
  • Ruby
阅读更多
Rails的session默认为当用户关闭浏览器时终止
我们可以在config/environment.rb里设置它:
CGI::Session.expire_after 1.month

这需要一个插件,具体session设置请参考http://wiki.rubyonrails.org/rails/pages/HowtoChangeSessionOptions
这不是今天我们讨论的重点

出于安全问题,有时候我们需要通知用户你的session快超时了,如在线银行系统等
让我们看看在Rails里怎样做

1,bank_account_controller.rb
class BankAccountController < ApplicationController
  before_filter :update_activity_time, :except => :session_expiry
  def update_activity_time
    session[:expires_at] = 1.minutes.from_now
  end
  
  def session_expiry
    @time_left = (session[:expires_at] - Time.now).to_i
    unless @time_left > 0
      reset_session
      render '/signin/redirect'
    end
  end
end

该controller里定义了update_activity_time这个before_filter,它设置session的超时时间,这里为了demo我们设置为1分钟

2,bank_account/index.rhtml
<html>
    <head>
        <%= javascript_include_tag :defaults %>
    </head>
    <body>
        <div id='header'></div>
        <%= periodically_call_remote :url => {
                :action => 'session_expiry'},
                :frequency => 1,
                :update => 'header' %>
        <div id='body'>Here's where your application's real functionality goes.</div>
    </body>
</html>

我们使用periodically_call_remote这个helper方法来每间隔1秒远程调用一次session_expiry这个action,并更新header这个div

3,bank_account/session_expiry.rhtml
<span style='color: read; font-weight: bold'>
    Your session will expire in <%= @time_left %> seconds
</span>

这里显示了我们的session还有多久会expire

4,signin/redirect.rjs
page << "window.location = '#{signin_url}';"

我们在session超时的时候自动redirect到signin_url(需要我们在routes.rb里定义)
分享到:
评论

相关推荐

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    Build your own ruby on rails web application

    Build your own ruby on rails web application

    Ruby on Rails Tutorial

    《Ruby on Rails Tutorial》中文版(原书第2版,涵盖 Rails 4) Ruby 是一门很美的计算机语言,其设计原则就是“让编程人员快乐”。David Heinemeier Hansson 就是看重了这一点,才在开发 Rails 框架时选择了 Ruby...

    免费Ubuntu系统ruby on rails安装【保姆级教程】

    Ubuntu系统ruby on rails安装 Ubuntu系统ruby on rails安装 Ubuntu系统ruby on rails安装 Ubuntu系统ruby on rails安装 Ubuntu系统ruby on rails安装 Ubuntu系统ruby on rails安装 Ubuntu系统ruby on rails安装 ...

    ruby on rails社区网站开发源码

    ruby on rails社区网站开发源码

    ruby on rails对mongodb的操作

    ruby on rails对mongodb的操作ruby on rails对mongodb的操作ruby on rails对mongodb的操作ruby on rails对mongodb的操作

    Ruby On Rails中文教材(PDF)

    Ruby On Rails中文教材(PDF)

    [Michael Hartl] Ruby on Rails Tutorial

    “The author is clearly an expert at the Ruby language and the Rails framework, but more than that, he is a working software engineer who introduces best practices throughout the text.” —Greg ...

    Rails之道,完整扫描版

    Ajax、Prototype和Scriptaculous等JavaScript代码库和RJS,Session管理、用户登录和认证系统,XML和ActiveResource,后台处理和ActionMaile,测试和specs(包括RSpec on Rails和Selenium),安装、管理、编写插件,...

    提升Ruby on Rails性能的几个解决方案

    Ruby On Rails 框架自它提出之日起就受到广泛关注,在“不要重复自己”,“约定优于配置”等思想的指导下,Rails 带给 Web 开发者的是极高的开发效率。 ActiveRecord 的灵活让你再也不用配置繁琐的 Hibernate 即可...

    Ajax on Rails

    If you've already started working with Rails and seek to deepen your skill set, you'll find dozens of examples drawn from real-world projects, exhaustive reference for every relevant feature, and ...

    Ruby on Rails中文指南

    Ruby on Rails中文指南

    rails-settings, 使用 Ruby on Rails 管理设置.zip

    rails-settings, 使用 Ruby on Rails 管理设置 Rails的设置 ruby gem,通过在单独的数据库表中将它们存储为序列化的哈希来处理。 包含命名空间和默认值。要求ruby 1.9.3或者更高版本Rails 3.1或者更高版本( 包括 ...

    ruby on rails最新版

    ruby on rails最新版 这是本人精心收集的重要软件

    Ruby On Rails教程

    Ruby On Rails 官方教程,这本书讲解如何使用 Ruby on Rails 框架开发应用,以及如何把应用部署到生成环境。本书使用 Rails 默认的开发工具栈开发了一个完整的社交应用(类似 Twitter)。读完本书后你将掌握如何使用...

    RVM_Ruby1.9.3_Rails3(2-Ruby on Rails3安装配置)

    Windows7_Cygwin_Git_RVM_Ruby1.9.3_Rails3_MongoD B_Nginx_Unicorn_Rspec_Guard_Spork(2-Ruby on Rails3 安装配置

    ruby on rails api

    ruby on rails api方便查阅

    Ajax on Rails (PPT)

    Ajax on Rails 的 PPT。 pdf格式。

    Ruby on rails tutorial中文版(第二版)

    书里的一切都很符合“Rails 之道”,我以前觉得这个道很不自然,但是读完这本书,感觉却是自然无比。本书也是唯一一本自始至终都是用测试驱动开发理念的 Rails 书籍,很多行家都推荐使用 TDD,但是在本书出版之前从...

Global site tag (gtag.js) - Google Analytics