sessiond的简单介绍与相关用法
2014-02-11 20:03
302 查看
session 简单来说,就是用于保存数据放在cookies中或者数据库中,至于放在那里更好,在下面有详细的解释。
session 的缺点:很难控制session的有效使用时间、存储量大小等后续问题。
1.使用范围
controller和view中可用
2 session 的创建 (1)rake db:sessions:create //创建session表
(2)rake db:migrate(3)在config/initializers/session_store.rb中把下面语句的注释去掉,目的是要告诉rails使用ActiveRecord去管理session
注意:使用session要注意适时清除与限制。清除session可以直接赋空值:
session[:update_user_id] = nil
3 session保存的数据
◇一般保存会话进行的必要数据,如保存登录用户的的ID: user = User.find_by_name(params[:name])
session[:user_id] = user.id if user ◇尽量不要直接保存类实例到session里面。因为如果这个实例对应的表数据被更新,
而没有同时更新session里保存的该实例,以后参照的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数据存到数据库中比较妥当。
session 的缺点:很难控制session的有效使用时间、存储量大小等后续问题。
1.使用范围
controller和view中可用
2 session 的创建 (1)rake db:sessions:create //创建session表
(2)rake db:migrate(3)在config/initializers/session_store.rb中把下面语句的注释去掉,目的是要告诉rails使用ActiveRecord去管理session
Rails.application.config.session_store :active_record_store(4)然后重启一下服务器就可以运行了
注意:使用session要注意适时清除与限制。清除session可以直接赋空值:
session[:update_user_id] = nil
3 session保存的数据
◇一般保存会话进行的必要数据,如保存登录用户的的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数据存到数据库中比较妥当。
相关文章推荐
- 关于jsp中session,application的简单介绍以及用法
- JFreeChart简单介绍及用法(入门)
- php session介绍及简单演示
- 正则表达式的简单介绍和string.replace的用法
- 简单介绍一下linux下的ftp服务及相关配置
- 网络学习(十六)简单介绍些虚拟机相关理论知识
- 【WP8】简单介绍wp8中原生LongListSelector控件的用法
- 【Cuda并行编程之一】二分查找的探究以及Cuda的简单实现&&相关面试题介绍
- HttpSessionListener, HttpSessionAttributeListener的用法及简单实例
- 工具 svn 介绍和简单用法
- express-session相关用法
- matlab的inpolygon用法简单介绍
- JSR 303 - Bean Validation 简单介绍及用法
- 程序相关工具用法介绍(git、markdown等)
- TimeUnit.convert 用法简单介绍
- location用法简单介绍
- JMS学习篇《一》ActiveMQ消息中间件的简单介绍与用法-概念篇
- session和cookie介绍以及session简单应用
- css3中background新增的4个新的相关属性用法介绍
- 第四十章 简单数据库应用的创建及相关介绍(十五)