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
Build your own ruby on rails web application
《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安装 ...
ruby on rails社区网站开发源码
ruby on rails对mongodb的操作ruby on rails对mongodb的操作ruby on rails对mongodb的操作ruby on rails对mongodb的操作
Ruby On Rails中文教材(PDF)
“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 ...
Ajax、Prototype和Scriptaculous等JavaScript代码库和RJS,Session管理、用户登录和认证系统,XML和ActiveResource,后台处理和ActionMaile,测试和specs(包括RSpec on Rails和Selenium),安装、管理、编写插件,...
Ruby On Rails 框架自它提出之日起就受到广泛关注,在“不要重复自己”,“约定优于配置”等思想的指导下,Rails 带给 Web 开发者的是极高的开发效率。 ActiveRecord 的灵活让你再也不用配置繁琐的 Hibernate 即可...
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中文指南
rails-settings, 使用 Ruby on Rails 管理设置 Rails的设置 ruby gem,通过在单独的数据库表中将它们存储为序列化的哈希来处理。 包含命名空间和默认值。要求ruby 1.9.3或者更高版本Rails 3.1或者更高版本( 包括 ...
ruby on rails最新版 这是本人精心收集的重要软件
Ruby On Rails 官方教程,这本书讲解如何使用 Ruby on Rails 框架开发应用,以及如何把应用部署到生成环境。本书使用 Rails 默认的开发工具栈开发了一个完整的社交应用(类似 Twitter)。读完本书后你将掌握如何使用...
Windows7_Cygwin_Git_RVM_Ruby1.9.3_Rails3_MongoD B_Nginx_Unicorn_Rspec_Guard_Spork(2-Ruby on Rails3 安装配置
ruby on rails api方便查阅
Ajax on Rails 的 PPT。 pdf格式。
书里的一切都很符合“Rails 之道”,我以前觉得这个道很不自然,但是读完这本书,感觉却是自然无比。本书也是唯一一本自始至终都是用测试驱动开发理念的 Rails 书籍,很多行家都推荐使用 TDD,但是在本书出版之前从...