Rails fresh_when应该在etag中包含当前用户ID

问题描述 投票:1回答:1

我看到很多这样的例子:

def show
  @article = Article.find(params[:id])
  fresh_when(@article)
end

但是该页面还包含有关已登录用户的信息(如顶部导航)。用户可以:

  • 以用户A身份登录
  • 访问文章
  • 注销
  • 以用户B身份登录
  • 再次访问文章

...糟糕,用户将看到有关用户A的数据,而不是用户B的数据,因为文章未修改。

如何将当前用户ID包括在哈希(etag)中?或者,还有其他解决方案可以避免上述问题?

ruby-on-rails etag http-caching ruby-on-rails-6
1个回答
0
投票

也许您可以将current_user ID添加到所有控制器中的etag中。

class ApplicationController < ActionController::Base
  etag { current_user.try :id }
end

通过这种方式,您可以解决登录用户的问题,该用户可能会获得与非登录用户不同的内容。

© www.soinside.com 2019 - 2024. All rights reserved.