Ruby on rails Rails会话当前的实践
有人有关于Rails和会话的“最佳实践”提示吗?Rails 3的默认会话类型仍然是CookieStore,对吗?我曾经使用过SqlSessionStore,它运行得很好,但我可能会放弃它,转而使用CookieStoreRuby 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开发的一般原则 至于加密,我不
将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迁移
查看最新版本的。我上次听说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”]endrake db:sessions:create
和rails generate session_migration
生成器在rails 4中被弃用和删除,因为它们不能很好地为具有多个用户的应用程序(太多的数据库读写)扩展。看见