繁体   English   中英

登录或注销后进行设计重定向不适用于Rails页面缓存

[英]Devise redirect after login or logout doesn't work with Rails page caching

我在Heroku上的Rails应用程序中使用Devise进行身份验证。

登录和注销设置后,我已经按照Devise Wiki中建议的方式进行了重定向。 https://github.com/plataformatec/devise/wiki/How-To:-Redirect-back-to-current-page-after-sign-in、-sign-out、-sign-up、-update

application_controller.rb:

after_filter :store_location

def store_location
  # store last url as long as it isn't a /users path
  session[:previous_url] = request.fullpath unless (request.fullpath =~ /\/users\/sign_in/ || request.fullpath =~ /\/users\/sign_out/ || request.fullpath =~ /\/users\/sign_up/ || request.fullpath =~ /\/users\/edit/ || request.fullpath =~ /\/ajax_utilities/ || request.fullpath =~ /\/assets/)
end

def after_sign_in_path_for(resource)
  session[:previous_url] || root_path
end

def after_sign_out_path_for(resource)
  session[:previous_url] || root_path
end

重定向工作正常,直到使用以下代码启用页面缓存:

class AboutController < ApplicationController

  def index
      expires_in 1.minutes, public: true
  end

end

我99%肯定不会调用store_location,因为页面缓存在Rails中的工作方式将永远无法到达应用程序控制器,因为Rack提供了静态HTTP而不接触Rails。

是否有人对我可以如何利用Rails页面缓存同时在登录/注销后重新定向以使Devise正常工作有任何想法?

谢谢你的帮助。

AboutController尝试一个before过滤器

before_filter :destroy_cache

def destroy_cache
  response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
  response.headers["Pragma"] = "no-cache"
  response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
end

不确定确切需要什么,但是也许是一个起点

看看这篇文章和原始引文

更新:

看一下这篇文章 它将向您展示如何设置友好的转发,这听起来像您想要做的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM