我正在开发一个Facebook应用程序,所以我不能依赖于P3P的(隐私首选项目),是的,这是一个该死的痛苦(见slides 18 and 19 on this slideshare about Rails and Facebook apps的图片它...)
在Facebook应用中,从浏览器的角度来看,每个Cookie都是第三方Cookie 。许多浏览器默认阻止它们。
所以我的问题是:如何在不依赖Cookie的情况下实现Flash消息?
更新
我相应地修改了session_store.rb
和DB。现在会话存储在数据库中,但flash消息仍然依赖于cookie ...请问有什么想法吗?
更新#2:
我终于找到了解决方法,请参阅下面的答案。最好的办法是 ajax everything (根据上面链接的slidehare),但作为一个快速解决方案,我的解决方案应该可行。
答案 0 :(得分:3)
我终于找到了一个解决方法来实现我自己的(简单)flash消息,并将它们从一个请求传递给另一个请求。
首先,我在default_url_options
中覆盖application_controller.rb
以附加到每个请求a:my_flash param:
def default_url_options
{ :my_flash => @my_flash }
end
然后,总是在application_controller.rb
,我写了一个my_flash_from_params
before_filter来设置@my_flash
变量:
def my_flash_from_params
@my_flash = params[:fb_flash]
end
最后,我在_my_flash.html.erb
application.html.erb
部分内容
<div class="my_flash">
<%= my_flash %>
</div>
通话:
<%= render :partial => "layouts/my_flash", :locals => {:my_flash => @my_flash} if @my_flash %>
如果您想尝试此解决方案,请参阅this answer about default_url_options rewriting。
答案 1 :(得分:0)
Flash消息构建在会话之上。因此,如果更改会话存储以使用数据库,则仍可依赖闪存。这可以通过编辑config/initializers/session_store.rb
并按照该文件上的说明轻松完成。
以下是有关该主题的更多信息:Action Controller Overview -> Session