Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails会话当前的实践_Ruby On Rails_Ruby_Session_Cookies - Fatal编程技术网

Ruby on rails Rails会话当前的实践

Ruby on rails Rails会话当前的实践,ruby-on-rails,ruby,session,cookies,Ruby On Rails,Ruby,Session,Cookies,有人有关于Rails和会话的“最佳实践”提示吗?Rails 3的默认会话类型仍然是CookieStore,对吗?我曾经使用过SqlSessionStore,它运行得很好,但我可能会放弃它,转而使用CookieStore 将CookieStore用于敏感信息(即使是盐渍信息)仍然不是一个好主意,还是更好地存储在数据库中?我认为任何平台上的任何人处理基于cookie的会话的方式都没有改变。对任何超出服务器控制范围的事情(cookies、表单帖子等)持怀疑态度,这是web开发的一般原则 至于加密,我不

有人有关于Rails和会话的“最佳实践”提示吗?Rails 3的默认会话类型仍然是CookieStore,对吗?我曾经使用过SqlSessionStore,它运行得很好,但我可能会放弃它,转而使用CookieStore


将CookieStore用于敏感信息(即使是盐渍信息)仍然不是一个好主意,还是更好地存储在数据库中?

我认为任何平台上的任何人处理基于cookie的会话的方式都没有改变。对任何超出服务器控制范围的事情(cookies、表单帖子等)持怀疑态度,这是web开发的一般原则

至于加密,我不知道这方面是否有任何变化


cookie存储需要注意的是对数据量的限制,以及在每个请求中此数据将通过网络发送的问题,其中作为数据库存储只传输id,数据位于服务器上。

将数据库用于会话,而不是基于cookie的默认值,不应该用来存储高度机密的信息

使用创建会话表

rake db:sessions:create
运行迁移

rake db:migrate
确保您也告诉rails使用ActiveRecord来管理您的会话

轨道3 config/initializers/session_store.rb:

Rails.application.config.session_store :active_record_store
轨道2 config/environment.rb:

config.action_controller.session_store = :active_record_store

FWIW,rails 3.1建议运行

rails generate session_migration
但是,这将生成与相同的迁移

rake db:sessions:create

Rails的默认设置在我看来相当不错——CookieStore速度很快,应该涵盖大多数用例。当然,您被限制为4kb,并且您的数据将对用户可见,但是Rails的方法是仅将会话用于诸如整数ID和基本字符串值之类的内容-如果您试图在会话中存储对象或高度机密的信息,那么您可能做得不对

Cookie在Rails 4中默认是加密的 在Rails 4中,默认情况下对cookie进行加密和签名:

如果您只设置了
secret\u令牌
,您的cookie将被签名,但不会被签名 加密的。这意味着用户无法在不知道您的密码的情况下更改其
用户id
应用程序的密钥,但可以轻松读取其
用户id
。这是默认值 对于Rails 3应用程序

如果您设置了
secret\u key\u base
,您的cookie将被加密。这是一个 比签名Cookie更进一步,加密Cookie无法更改 或由用户阅读。这是Rails 4中的默认起点

如果您同时设置了
secret\u token
secret\u key\u base
,您的cookie将 被加密,Rails 3生成的签名cookie将透明 读取并加密以提供平滑的升级路径

Rails 4中不推荐使用活动记录会话存储 关于Rails 4,现在已经过时了。活动记录 会话存储已被弃用并从Rails中删除,因此 发电机将不再工作:

  • rake数据库:会话:创建

  • rails生成会话\u迁移

有人在报告中指出了这一点。激活记录的原因 不推荐使用会话存储,因为对数据库的读/写操作不正确 当有大量用户访问应用程序时,可以很好地扩展,如 声明如下:

…Active Record会话存储的一个主要问题是它不是 可伸缩。它会给数据库带来不必要的负载。一旦你申请 接收大量流量时,会话数据库表为 不断地被读/写操作轰炸

从Rails 4开始,活动记录会话存储已经从核心中删除 框架,现在已弃用

如果仍要使用活动记录会话存储

当前Rails会话最佳实践 关于RubyonRails会话的最新最佳实践,我建议您
查看最新版本的。

我上次听说ARstore for sessions的速度非常慢。有人知道基准测试吗?如果你观察sessions表的增长并设置一个作业来相应地修剪它,你就不会有性能问题。这与Desive冲突吗?这里是Rails 3.2,它类似于nameofMyApplication::Application.config.session\u store:active\u record\u store在Rails 4中,
rake db:sessions:create
被弃用并删除,因为它不能很好地扩展到用户众多的应用程序(太多的数据库读写)。请参阅。另外,当前使用Memcached进行会话存储的想法是什么?相关:。同样,rake任务
db:sessions:create
现在直接调用
session\u迁移
生成器。task:create=>:除非ActiveRecord::Base.connection.supports\u迁移,否则环境是否会引发“此数据库不可用的任务(无迁移支持)”?需要“rails/generators”rails::generators.configure!需要'rails/generators/rails/session_migration/session_migration_generator'rails::generators::SessionMigrationGenerator.start[ENV[“migration”]| | |“add_sessions_table”]end
rake db:sessions:create
rails generate session_migration
生成器在rails 4中被弃用和删除,因为它们不能很好地为具有多个用户的应用程序(太多的数据库读写)扩展。看见