是Ruby for Rails应用程序必需的cookie吗?

时间:2009-05-26 02:47:24

标签: ruby-on-rails

Rails是否依赖于cookie?闪光似乎是其中的一部分 会话,会话使用cookie ...所以当我禁用cookie时 Firefox,一个正在运行的Rails应用程序显示

  

[错误]   的ActionController :: InvalidAuthenticityToken

因此,对于RoR应用程序来说,cookie是强制性的吗?

更新:或者,为了让Rails应用再次运行,最简单的方法是什么? (如果它只是一台服务器(Apache运行mod_rails),那么它更容易吗?)

2 个答案:

答案 0 :(得分:5)

它们不是强制性的,但有一些事情你不能没有cookie。您可以按照here所述关闭真实性标记。

答案 1 :(得分:3)

使用cookie并不是强制性的,但它是默认的2.x以上的rails。使用cookie可以解决当您尝试将cookie存储在多个服务器的内存中时出现的一些更困难的问题(并且会遇到诸如粘性会话,丢失用户数据等)。

您可以设置rails存储会话数据的位置;这就是闪存以及与特定用户相关的任何内容。在environment.rb中,您可以使用 config.action_controller.session_store 配置存储会话的位置。其选项包括::cookie_store,:active_record_store,:p_store,:drb_store,:mem_cache_store或:memory_store

如果您将选项注释掉或从environemnt.rb中删除它,则

cookie_store是默认值。它也是最通用的。如果您有多个服务器,则一个用户请求可能会进入一个服务器,下一个请求可能会进入另一个服务器。在这种情况下,您无法使用memory_store,因为第二台服务器对当前用户一无所知。

通过将会话信息存储在加密的cookie中,服务器上存储的负载较少,无法存储此信息。唯一的缺点是每个服务器的请求都需要传递cookie(通常<1k),但这与我所经历过的任何事情都没有明显区别。

:cookie_store,:mem_cache_store和:active_record_store是最常用的。