rails 的 session 究竟存在哪里?

问题描述

rails版本 2.3.5登录之后,设置了session[:admin],可是在tmp/sessions 文件夹是空的。似乎也不再内存中,因为服务器重启之后,刷新页面还是已经登录的状态。数据库中也没有session表。rails session 存在哪里,帮忙解答一下,谢谢 问题补充:orcl_zhang 写道

解决方案

默认的是存在cookie中啊。
解决方案二:
在数据库里。
解决方案三:
到项目的tmp目录看看,应该是一个flat文件
解决方案四:
一,打开电脑,打开ie,ff或者chrome任一浏览器.打开浏览器,输入www.google.com.找到页面中间的输入框输入"rails session",然后点击google搜索.找到第一条记录,右键点击,选择"打开新标签页"session:页面间的信息保存手段。使用:赋值session[:person] = @user读取Hello #{session[:person]}清除session[:person] = nil全部清除reset_sessionRuby on Rails提供的session存储方案:PStore (文件存储,默认方式)ActiveRecordStore(数据库)DRbStoreFileStoreMemoryStore各存储方案在性能上的比较:Ruby on Rails Session Container Performance如何使用ActiveRecordStore(数据库)做为session存储方案使用数据库作为session储存方案可以让网站更方便地扩展成多服务器网站。使用方法:1. 运行 rake db:sessions:create2. 将config/environment.rb, uncomment 中下行的注释#去除: config.action_controller.session_store = :active_record_store3. 运行rake db:migrate4. 重启服务器。二,打开电脑,打开ie,ff或者chrome任一浏览器.打开浏览器,输入www.google.com.找到页面中间的输入框输入"session",然后点击google搜索.找到第一条记录,右键点击,选择"打开新标签页"百科名片Session:在计算机中,尤其是在网络应用中,称为“会话”。目录session简介Session的解决方案在ASP 和 ASP .NET 中在JSP中php中的session使用详解asp中的session使用方法详解ASP Session的功能的缺陷HIbernate中的Session展开编辑本段session简介  Session直接翻译成中文比较困难,一般都译成时域。在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。  具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。  需要注意的是,一个Session的概念需要包括特定的客户端,特定的服务器端以及不中断的操作时间。A用户和C服务器建立连接时所处的Session同B用户和C服务器中建立连接时所处的Sessions是两个不同的Session。编辑本段Session的解决方案  那什么是Session的解决方案呢?我们知道,用户访问一个网站时往往需要浏览许多网页。对于一个通过PHP构筑的网站来说,用户在访问的过程中需要执行许多的PHP脚本。然而由于HTTP协议自身的特点,用户每执行一个PHP脚本都需要和Web服务器重新建立连接。  又由于无状态记忆的特点,此次连接无法得到上次连接的状态。这样,用户在一个PHP脚本中对一个变量进行了赋值操作,而在另外一个PHP脚本中却无法得到这个变量的值。例如,用户在负责登录的PHP脚本中设置了$user="wind",却无法在另一个PHP脚本中通过调用$user来获得“wind”这个值。也就是说,在PHP中无法设置全局变量。每个PHP脚本中所定义的变量都是只在这个脚本内有效的局部变量。  Session解决方案,就是要提供在PHP脚本中定义全局变量的方法,使得这个全局变量在同一个Session中对于所有的PHP脚本都有效。上面我们提到了,Session不是一个简单的时间概念,一个Session中还包括了特定的用户和服务器。因此更详细地讲,在一个Session定义的全局变量的作用范围,是指这个Session所对应的用户所访问的所有PHP。  例如A用户通过Session定义了一个全局变量$user=“wind”中,而B用户通过Session定义的全局变量$user=“jane”。那么在A用户所访问的PHP脚本中,$user的值就是wind。编辑本段在ASP 和 ASP .NET 中  Session 是 用于保持状态的基于 Web 服务器的方法。Session 允许通过将对象存储在 Web 服务器的内存中在整个用户会话过程中保持任何对象。Session 通常用于执行以下操作:  存储需要在整个用户会话过程中保持其状态的信息,例如登录信息或用户浏览 Web 应用程序时需要的其它信息。  存储只需要在页重新加载过程中或按功能分组的一组页之间保持其状态的对象。  Session 的作用就是它在 Web 服务器上保持用户的状态信息供在任何时间从任何页访问。因为浏览器不需要存储任何这种信息,所以可以使用任何浏览器,即使是像 PDA 或手机这样的浏览器设备。持久性方法的限制  随着越来越多用户登录,Session 所需要的服务器内存量也会不断增加。  访问 Web 应用程序的每个用户都生成一个单独的 Session 对象。每个 Session 对象的持续时间是用户访问的时间加上不活动的时间。  如果每个 Session 中保持许多对象,并且许多用户同时使用 Web 应用程序(创建许多 Session),则用于 Session 持久性的服务器内存量可能会很大,从而影响了可伸缩性。

时间: 2024-10-03 10:34:09

rails 的 session 究竟存在哪里?的相关文章

Rails开发细节(八)Rails应用的安全

看过本文之后,你应该熟悉下面的内容: 所有显著的对策. rails中session的概念,其中存放的内容,常见的攻击手段. rails中大量的分配问题. 在提供管理接口的时候,你不得不关注的一些事情. 如何管理用户:登陆,退出,在各个层面的攻击方法. 常见的注入攻击方法. 1.简介 web框架帮助开发者构建web应用.它们中的一些还可以帮助你构建安全的web应用.事实上一个框架并不比两一个框架安全,如果你正确的使用,你可以用很多框架构建安全的web应用.rails包含一些聪明的帮助工具,例如防止

Rails安全导读【一】

原文地址:http://guides.rubyonrails.org/security.html 这个指南描述的是在web应用里普遍的安全问题,同时也给出了在Rails里如何避免这些问题.如果你有任何问题,请mail作者,Heiko Webers, at 42 {et} rorsecurity.info. 读完此文后,你应该会了解: 1.所有的对策已经被高亮显示了 2.在Rails里session的概念, 该放什么在session里,以及一些流行的攻击方法 3.只是浏览一个站点,怎么就有安全问题

Oracle 彻底 kill session

--*************************** -- Oracle 彻底 kill session --***************************       kill session 是DBA经常碰到的事情之一.如果kill 掉了不该kill 的session,则具有破坏性,因此尽可能的避免这样的错误发生.同时也应当注意, 如果kill 的session属于Oracle 后台进程,则容易导致数据库实例宕机.   通常情况下,并不需要从操作系统级别杀掉Oracle会话进程

【kill session】Oracle 彻底 kill session(转载)

偶然间看到一篇关于Kill session的文章,很不错,mark一下,备忘. 原文地址:http://space.itpub.net/22578826/viewspace-702987 Oracle 彻底 kill session --*************************** -- Oracle彻底kill session --***************************      killsession是DBA经常碰到的事情之一.如果kill掉了不该kill的sess

Ruby on rails开发从头来(windows)(八)-使用Session创建购物车

在前面的内容里,我们演示了怎样构建一个商品的列表,这次,我们在前面内容的基础上,构建一个简单的购物车. 1.首先我们要来创建一个保存客户购物信息的表: 数据库脚本: drop table if exists line_items; create table line_items ( id int not null auto_increment, product_id int not null, quantity int not null default 0, unit_price decimal

rails 如何定时删除数据库里面的session

问题描述 我把一个ror项目的session保存到了数据库中,要如何做才能删除超过规定时间的session呢 解决方案 N 久之前写过一个namespace :db do namespace :sessions do desc "Agide rake db:sessions:timeclear DAY=1 :Clear the sessions table where update before N day" task :timeclear => :environment do

Ruby on rails开发从头来(windows)(三十三)- 命名约定

在刚开始学习Rails的时候可能会困惑于Rails时怎样自动处理命名的,比如如何根据一个名为Person的Model来到数据库中找到名为people的表,这次我们就来看看Rails里的命名约定. 1.混合大小写,下划线,复数 我们经常使用简写命名变量,在Ruby中,约定为命名变量时,全部字母都小写,单词的中间使用下划线分割,类(Class)和Modules的命名有不同,不使用下划线,单词的简写和首字母使用大写.所以我们在前面编写的代码里有order_status和LineItem这样的类名. R

Ruby on rails开发从头来(windows)(二十五)-测试Controller

这次我们继续测试Controller,还是Store_controller. 1.先来测试测试CheckOut功能,给store_controller_test.rb添加代码: def test_checkout test_add_to_cart get :checkout assert_response :success assert_not_nil assigns(:order) assert_template "store/checkout" end 注意这里调用了另一个test

Ruby on rails开发从头来(windows)(二十三)-功能测试的约定

上篇随笔里测试了login_controller,我们使用了很多rails内建的断言和get,put等方法来进行测试.这次来看看rails在功能测试方面的一些约定. 1.HTTP请求的方法(HTTP request method) 下面的方法用来模拟HTTP请求并得到一个回应(response) get() put() post() delete() head() 这五个函数每一个都有同样的四个参数,以get()为例: get(action, parameters = nil, session