[英]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.