iteye_1750
2010-10-22 21:18
浏览 293
已采纳

rails 的 session 究竟存在哪里?

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

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • qichunren 2010-10-26 10:31
    已采纳

    默认的是存在cookie中啊。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • okela1985851010 2010-10-22 21:48

    一,
    打开电脑,打开ie,ff或者chrome任一浏览器.
    打开浏览器,输入www.google.com.
    找到页面中间的输入框输入"rails session",然后点击google搜索.
    找到第一条记录,右键点击,选择"打开新标签页"

    session:页面间的信息保存手段。

    使用:
    赋值
    session[:person] = @user
    读取
    Hello #{session[:person]}
    清除
    session[:person] = nil
    全部清除
    reset_session

    Ruby on Rails提供的session存储方案:
    PStore (文件存储,默认方式)
    ActiveRecordStore(数据库)
    DRbStore
    FileStore
    MemoryStore

    各存储方案在性能上的比较:
    Ruby on Rails Session Container Performance

    如何使用ActiveRecordStore(数据库)做为session存储方案
    使用数据库作为session储存方案可以让网站更方便地扩展成多服务器网站。使用方法:
    1. 运行 rake db:sessions:create
    2. 将config/environment.rb, uncomment 中下行的注释#去除:
    config.action_controller.session_store = :active_record_store
    3. 运行rake db:migrate
    4. 重启服务器。

    二,

    打开电脑,打开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 持久性的服务器内存量可能会很大,从而影响了可伸缩性。

    评论
    解决 无用
    打赏 举报
  • Tadas-Gao 2010-10-23 13:22

    到项目的tmp目录看看,应该是一个flat文件

    评论
    解决 无用
    打赏 举报
  • lei_king 2010-10-25 13:13

    在数据库里。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题