rails本身有对session的支持,但对session的管理确不人性化,当系统运行长后必然会产生大量的session文件。因此,需要动态的实现对session的管理
方法:
1、将如下代码拷贝后保存为sessionmgr.rb文件存储的到config目录下
module Sessionmgr
#启动session管理器,在超出时间timeout后,清除session
def start_mgr(timeout = "10m")
puts "start session manager, time=#{timeout}";
#构造等待时间
time = make_time(timeout);
#构造session管理线程
sm_thd = Thread.new(time) do |tm|
while 1
#删除系统过期session文件
dir = nil;
begin
#打开目录
dir = Dir.open("tmp/sessions");
#处理文件
dir.each do |dr|
#超时session,进行删除
if(dr =~ /^ruby_sess/ and (Time.now() - File.atime("tmp/sessions/#{dr}")) > time)
puts "clean session: #{dr}";
File.delete("tmp/sessions/#{dr}");
end
end
ensure
#关闭目录
dir.close if dir;
end
#十秒进行一次搜索
sleep 10;
end
end
end
private
#构造等待时间
def make_time(timeout)
#去掉空格和转换为小写
timeout = timeout.to_s().downcase().strip();
#如果时间匹配,进行转换,否则返回默认值10分钟
if ((timeout =~ /\d+[smhd]/) == 0)
time = timeout.to_i;
#计算单位
time *= case timeout[timeout.length-1, 1]
when 's': 1
when 'm': 60
when 'h': 60 * 60
when 'd': 24 * 60 * 60
else 1
end
else
10 * 60;
end
end
end
2、在environment.rb中加入如下代码
#导入session管理包
require "sessionmgr"
#包含模块Sessionmgr
include Sessionmgr
#启动session管理
Sessionmgr::start_mgr();
3、系统将自动进行sessiong管理
分享到:
相关推荐
activerecord-session_store, 从 Rails 中提取的记录存储的活动会话 Active Record 会话存储由 Active Record 类支持的会话存储。 提供了默认类,但是任何对 Active Record 会话类的对象鸭类型都有文本 session_id ...
Rails :: SessionCookie 快速,松散耦合的请求有关经过Cookie验证的应用程序的规范。 为什么 可能,您可能已经看到了很多像这样的代码: # config/initializers/session_store.rb Rails . application . config . ...
Ajax、Prototype和Scriptaculous等JavaScript代码库和RJS,Session管理、用户登录和认证系统,XML和ActiveResource,后台处理和ActionMaile,测试和specs(包括RSpec on Rails和Selenium),安装、管理、编写插件,...
rails generate active_record:session_migration 运行迁移: rake db:migrate 然后,在config/initializers/session_store.rb设置会话存储: Rails . application . config . session_store :active_record_...
介绍Rails session方法使我们可以访问Rails会话。 会话是使用Cookie实现的数据存储。 您可以在会话中存储简单的数据结构。 ActiveRecord模型,否。 字符串或数字数组,是的。 基本上,坚持使用数据文字-数字,字符串...
介绍Rails session方法使我们可以访问Rails会话。 会话是使用Cookie实现的数据存储。 您可以在会话中存储简单的数据结构。 ActiveRecord模型,否。 字符串或数字数组,是的。 基本上,坚持使用数据文字-数字,字符串...
Redis Session Store 一个简单的基于Redis的Rails会话存储。 但是,您问为什么有? redis-store是一种千篇一律的解决方案,我发现它不能与Rails一起正常使用,这主要是由于问题似乎出在Rack的Abstract::ID类中。 我...
plug_rails_cookie_session_store:与Rails兼容的插件会话存储
自动::会话::超时在Rails应用程序中提供自动会话超时。 非常容易安装和配置。 您是否曾经想过在用户闲置一段时间后强迫他们退出您的应用程序? 许多在线银行网站都使用这种技术。 如果您的应用程序在任何类型的公共...
有关Rails 3的支持,请查看问题了解选项,并让我们知道您是否需要支持。 安装 将mongo_session_store gem添加到您的Gemfile 。 结合使用mongo或mongoid宝石。 # Gemfile gem "mongoid" # or gem "mongo" gem ...
在随后的“Rails框架“部分中,作者深入介绍了Rails框架的各个组件。 除了上述两部分外,对Rails缺乏了解的读者应该首先阅读“起步”部分,通过一个最简单的应用示例感性了解这个时下热门的web框架。不熟悉Ruby的...
安全,对话(Session),请求处理组件(Request Handling Components) 12.灵活的ACL机制 13.数据的清理(Data Sanitization) 14.灵活的视图缓存(Flexible View Caching) 15.可在任何web站点的子目录里...
卡普琼卡Rails 4 的简单匹配验证码现场预览: : 导轨安装将此添加到您的 Gemfile 中: gem 'kapchonka' 运行以下命令进行安装: bundle install 运行生成器: rails generate kapchonka Gem 仅在 Rails 4 上测试...
_todos_session 会话必须包含在每个请求的标头中。 获取当前用户的所有待办事项: GET 'http://host/todos/all' 响应 JSON 数据示例: [{ " id " : 1 , " task " : " Task Title 01 " , " completed " : true }...
Slackr是由Rails和React / Redux开发的Slack的Web应用程序克隆。 功能与实现 用户认证 slackr允许用户使用BCrypt实施安全地登录/注销,以根据用户密码生成加盐的哈希值,因为此类用户的密码未存储在数据库中。 此外...
无密码创建一个名为Passwordless::Session模型。 它没有自己的User模型,它希望您创建一个模型: $ bin/rails generate model User email 然后使用以下命令指定User记录中的哪个字段是电子邮件字段: class User ...
Rubybin / session_server.rb Rubybin / template_server.rb 玩得开心! 如何使用 您可以使用Rails lite来制作小型项目,而不是使用rails。 如果要查看有关如何使用它的示例,请检出bin文件夹并查看每个文件的...
对于Rails应用程序,请使用 gem。安装对于Rack应用程序,您可以使用以下方法在Ruby文件中创建Amazon DynamoDB表: require 'aws-sessionstore-dynamodb'Aws::SessionStore::DynamoDB::Table.create_table通过以下...