ruby-on-rails - Rails fresh_when 应该在 etag 中包含当前用户 ID

标签 ruby-on-rails etag http-caching ruby-on-rails-6

我看到很多这样的例子:

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

然而,该页面还包含有关登录用户的信息(如顶部导航)。用户可以:
  • 以用户 A 身份登录
  • 访问文章
  • 登出
  • 以用户 B 身份登录
  • 再次访问文章

  • ... 哎呀,用户将看到有关用户 A 的数据,而不是用户 B,因为文章没有被修改。

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

    最佳答案

    也许您可以将 current_user id 添加到所有 Controller 的 etag 中。

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

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

    关于ruby-on-rails - Rails fresh_when 应该在 etag 中包含当前用户 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59032877/

    相关文章:

    ruby-on-rails - 如何为法语设置 Rails?

    ruby-on-rails - Carrierwave 将 Content-Type 设置为 Octet-Stream

    caching - Fiddler 显示缓存命中?

    rest - HTTP 缓存的授权检查

    ruby-on-rails - 每当 cron 作业在 Rails 3 中不起作用时

    mysql - Rails 5 使用 Ransack,自定义范围顺序进行排序

    javascript - Azure CosmosDb 存储过程 IfMatch 谓词

    iis - IIS 7.0上的ETag

    caching - Google Webfonts 的缓存验证器

    php - 从 PHP 缓存 header