Rails fresh_when 应该在 etag 中包含当前用户 ID
Rails fresh_when should include current user id in etag
我看到很多这样的例子:
def show
@article = Article.find(params[:id])
fresh_when(@article)
end
但是该页面还包含有关已登录用户的信息(如顶部导航)。用户可以:
- 以用户 A 身份登录
- 访问文章
- 注销
- 以用户 B 身份登录
- 再次访问文章
...糟糕,用户将看到有关用户 A 而不是用户 B 的数据,因为文章未被修改。
如何在散列 (etag) 中包含当前用户 ID?或者,是否有其他解决方案可以避免上述问题?
也许您可以将 current_user ID 添加到所有控制器的 etag 中。
class ApplicationController < ActionController::Base
etag { current_user.try :id }
end
这样,您就可以解决登录用户可能获得的内容与未登录用户不同的问题。
我看到很多这样的例子:
def show
@article = Article.find(params[:id])
fresh_when(@article)
end
但是该页面还包含有关已登录用户的信息(如顶部导航)。用户可以:
- 以用户 A 身份登录
- 访问文章
- 注销
- 以用户 B 身份登录
- 再次访问文章
...糟糕,用户将看到有关用户 A 而不是用户 B 的数据,因为文章未被修改。
如何在散列 (etag) 中包含当前用户 ID?或者,是否有其他解决方案可以避免上述问题?
也许您可以将 current_user ID 添加到所有控制器的 etag 中。
class ApplicationController < ActionController::Base
etag { current_user.try :id }
end
这样,您就可以解决登录用户可能获得的内容与未登录用户不同的问题。