我在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在不触及Rails的情况下提供静态HTTP。
有没有人对我如何利用Rails页面缓存有任何想法,同时在登录/注销后我的重定向正确地为Devise工作?
感谢您的帮助。
答案 0 :(得分:0)
在AboutController
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
不确定它到底是什么,但也许是一个起点
更新:
看看这个article。它将显示如何设置友好的转发,这听起来像你想要做的