Ruby on rails 如何在Rails上实现无cookieless flash消息?
我正在开发一个facebook应用程序,所以我不能依赖cookies,因为P3P(隐私偏好项目)是的,这是一个该死的痛苦(见图片) 在facebook应用程序中,从浏览器的角度来看,每个cookie都是第三方cookie。默认情况下,许多浏览器都会阻止它们 所以我的问题是:如何在不依赖cookie的情况下实现flash消息 更新: 我修改了session\u store.rb并相应地修改了数据库。现在会话存储在DB上,但是flash消息仍然依赖cookies。。。有什么想法吗 更新#2:Ruby on rails 如何在Rails上实现无cookieless flash消息?,ruby-on-rails,facebook,ruby-on-rails-3,cookieless,Ruby On Rails,Facebook,Ruby On Rails 3,Cookieless,我正在开发一个facebook应用程序,所以我不能依赖cookies,因为P3P(隐私偏好项目)是的,这是一个该死的痛苦(见图片) 在facebook应用程序中,从浏览器的角度来看,每个cookie都是第三方cookie。默认情况下,许多浏览器都会阻止它们 所以我的问题是:如何在不依赖cookie的情况下实现flash消息 更新: 我修改了session\u store.rb并相应地修改了数据库。现在会话存储在DB上,但是flash消息仍然依赖cookies。。。有什么想法吗 更新#2: 我终于
我终于找到了解决办法,请参见下面的答案。最好的办法是使用ajax(根据上面链接的幻灯片),但作为一个快速修复方案,我的解决方案应该可以工作。Flash消息构建在会话之上。因此,如果将会话存储更改为使用数据库,您仍然可以依赖flash。这可以通过编辑
config/initializers/session_store.rb
并遵循该文件上的说明轻松完成
以下是关于该主题的更多信息:我终于找到了一个解决办法实现我自己的(简单的)flash消息,并通过参数将它们从一个请求传递到另一个请求 首先,我覆盖了
application\u controller.rb中的default\u url\u选项
,将a:my\u flash参数附加到每个请求中:
def default_url_options
{ :my_flash => @my_flash }
end
然后,始终在application\u controller.rb
中,我在\u过滤器之前从\u params
编写了一个my\u flash\u,以设置@my\u flash
变量:
def my_flash_from_params
@my_flash = params[:fb_flash]
end
最后,我在application.html.erb
<div class="my_flash">
<%= my_flash %>
</div>
电话:
<%= render :partial => "layouts/my_flash", :locals => {:my_flash => @my_flash} if @my_flash %>
“布局/my\u flash”,:locals=>{:my\u flash=>@my\u flash}如果@my\u flash%>
如果您想尝试此解决方案,请参阅。我按照说明进行了操作,现在会话存储在数据库中,但闪存消息仍然依赖cookies!这太奇怪了。。。有什么想法吗?根据文档“所有会话存储都使用cookie来存储每个会话的唯一ID(您必须使用cookie,Rails不允许您在URL中传递会话ID,因为这样不太安全)。”。抱歉:(此外,在DB中处理会话对多dynos应用程序不起作用……在没有cookie的情况下处理会话真是一件痛苦的事。无论如何,谢谢你。