`
shaorui23
  • 浏览: 22205 次
  • 性别: Icon_minigender_1
  • 来自: 惠州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Rails3 session应用

 
阅读更多

开发时遇到需要带参数的页面跳转。可以使用http中get方法直接跟参数的形式去完成这个小问题,但是看着整个url很长很杂,所以想到了session来解决这个问题。在rails3中,session用法不难,难的是要控制session的有效使用时间、存储量大小等后续问题。

1.使用范围
controller和view中可用
2.保存的数据
◇一般保存会话进行的必要数据,如保存登录用户的的ID:
user = User.find_by_name(params[:name])
session[:user_id] = user.id if user

◇尽量不要直接保存类实例到session里面。因为如果这个实例对应的表数据被更新,
而没有同时更新session里保存的该实例,以后参照的session里的数据将成为旧的。
如:
user = User.find_by_name(params[:name])#假设初值为 用户名="xxx"
session[:current_user] = user if user #session[:current_user].name="xxx"
⇒ 处理过程中用户修改了自己的name为"yyy" #用户名="yyy"
而程序对session没做任何处理
⇒ 之后参照session里的用户名 #session[:current_user].name="xxx"
◇session保存形式
默认情况下rails程序的session数据保存在cookie中。
会话最早建立的时候WEB程序把cookie发给客户端浏览器,
之后每次客户端提交请求时浏览器都会把cookie的数据一起提交给服务器,用于验证。
但是推荐把session数据保存到数据库中,原因:
1.rails2.3.5中cookie中保存数据不能超过4k,否则会报异常。
2.大型系统的WEB服务器一般为了负载平衡会使用几台服务器分担处理。
这样同一个会话的几次请求可能会被分配到不同的服务器去。
为了使各服务器能共享session的数据,所以把session数据存到数据库中比较妥当。

(参考:http://goldyrain.blog.hexun.com/46941830_d.html

一:创建

创建session表:


执行migration:


config/initializers/session_store.rb中把下面语句的注释去掉,目的是要告诉rails使用ActiveRecord去管理session。

然后重启一下服务器就可以运行了。

二、具体运用

下面是ROR+Ext的应用,具体是把一些参数赋值给session。



长长的url,后面带着参数:

应用上面方法简洁了:


注意:使用session要注意适时清除与限制。清除session可以直接赋空值:

三、拓展

提供有几个学习链接:

Ruby On Rails Security Guide http://guides.rubyonrails.org/security.html

Share sessions between Rails 2 and Rails 3 applications http://blog.kabisa.nl/2010/10/27/share-sessions-between-rails-2-and-rails-3-applications/


分享到:
评论

相关推荐

    rails-session_cookie:一个用于获取原始Rails会话Cookie的机架应用

    Rails :: SessionCookie 快速,松散耦合的请求有关经过Cookie验证的应用程序的规范。 为什么 可能,您可能已经看到了很多像这样的代码: # config/initializers/session_store.rb Rails . application . config . ...

    Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码。

    3. **log**:日志目录,存储应用运行时的日志信息,有助于调试和问题排查。 4. **vendor**:供应商目录,通常存放第三方库或依赖,如JavaScript库、宝石(gem,Ruby的包管理器)等。 5. **config**:配置目录,...

    Ruby-RailsFootnotes在每一个Rails页脚展示应用程序的相关信息方便调试

    1. ** Sessions 显示**:在开发过程中,Session数据往往承载着用户状态和会话信息,查看这些数据有助于理解用户行为和应用逻辑。 2. ** 请求参数**:Rails Footnotes能够展示HTTP请求的所有参数,包括GET和POST数据...

    Rails 3 in Action

    ### Rails 3 in Action 关键知识点解析 #### 一、Ruby on Rails 框架简介 **Rails 3 in Action** 这本书介绍了 **Ruby on Rails**(简称 Rails)这一 Web 开发框架的核心概念和技术细节。Rails 自发布以来便以其...

    rails 项目起步示例

    3. **config**:配置文件的集合,包括数据库连接、路由设置、应用环境等。 4. **db**:数据库相关的文件,如迁移(migrations)用于数据库结构的版本控制。 5. **lib**:自定义库和扩展代码存放的地方。 6. **log...

    rails敏捷开发的购物车系统

    Rails提供了Session存储,可以用来临时存储用户的购物车信息,但这种存储方式不适用于持久保存。因此,通常我们会将购物车内容存入数据库,以便用户在不同会话之间保持购物车状态。在添加或删除商品时,更新购物车...

    web开发之rails最新调试通过购物车代码

    5. **会话(Session)**:Rails中的会话管理允许在多个请求之间保持状态,这对于购物车尤为重要,因为用户可能需要在不同时间查看或修改购物车。 6. **数据库迁移(Database Migrations)**:Rails提供了方便的工具...

    在Rails中使用SSL

    在Rails中使用SSL(安全套接层)是构建Web应用时确保数据传输安全的重要步骤。Rails框架支持在应用程序中轻松集成SSL,以保护用户敏感信息,如登录凭据和支付详情。以下是一些关于在Rails中实施SSL的关键知识点: 1...

    Ruby on Rails 3.2 Tutorial

    7. **会话和cookies**:讲解如何使用Rails的session和cookie机制来管理用户状态。 8. **表单和链接**:介绍如何创建HTML表单以及使用Rails的辅助方法创建链接,实现用户交互。 9. **部署**:讲解如何将应用程序...

    一个Jasonette微博应用,用rails构建(服务端),.zip

    这种方式比传统的session更加安全,尤其适用于移动应用和API服务。 综上所述,这个项目涵盖了以下知识点: 1. Jasonette:JSON驱动的原生移动应用框架,简化跨平台开发。 2. Ruby on Rails:基于Ruby的Web开发框架...

    关于Rails登录和验证插件http_authentication restful-authentication

    1. **Session**: 在Rails中,session用于在客户端浏览器和服务器之间存储临时状态。当用户成功登录后,会话ID会被存储在用户的cookie中,服务器根据这个ID识别用户,从而实现会话持久化。 2. **哈希和加密**: 为了...

    Ruby on Rails 初体验--北大青鸟教师专题讲座PPT

    Ruby on Rails,简称RoR,是由Ruby编程语言构建的开源Web应用框架,以其高效和简洁的设计原则闻名。RoR遵循MVC(Model-View-Controller)架构模式,旨在简化Web应用开发,降低开发者的工作负担,提高开发效率。该...

    Web开发敏捷之道-应用Rails进行敏捷Web开发-第三版.rar

    除了上述两部分外,对Rails缺乏了解的读者应该首先阅读“起步”部分,通过一个最简单的应用示例感性了解这个时下热门的web框架。不熟悉Ruby的读者应该阅读“附录”部分中的“Ruby简介”,以便了解Ruby的基本语法与...

    ruby on rails入门

    - **创建第一个 Rails 应用**:使用命令 `rails new myapp` 可以快速创建一个新的 Rails 应用程序,其中 `myapp` 是应用的名称。 - **启动服务器**:进入应用目录后,通过命令 `rails server` 启动服务器。访问 `...

    基于Ruby On Rails的在线购书系统

    Ruby on Rails(RoR)是一个开源的Web应用框架,它遵循MVC(模型-视图-控制器)架构模式,以Ruby编程语言为基础,为开发者提供了高效且简洁的开发体验。 本项目的核心知识点包括: 1. **Ruby语言基础**:Ruby是一...

    todos-rails:适用于 Ruby on Rails 的 Todolist 应用程序

    适用于 Ruby on Rails 的 Todolist 应用程序 现场演示 要求 吉特 Ruby 导轨 部署 克隆这个存储库: git clone https://github.com/mdluo/todos.git 然后进入目录: cd todos 安装包: bundle install 然后运行...

    ruby on rails 教程

    **标题解析:**“ruby on rails 教程”直指文档内容旨在教授Ruby on Rails框架的基础知识和应用技巧,Ruby on Rails(RoR)是一种用于Web开发的开源框架,基于Ruby语言,它遵循MVC(模型-视图-控制器)架构模式,...

Global site tag (gtag.js) - Google Analytics