Я использую Devise для аутентификации в моем приложении Rails на Heroku.devise redirect после входа в систему или выхода из системы не работает с кешированием страниц Rails
У меня есть перенаправления после входа в систему и выхода из системы, как это предлагается сделать в викторине. (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, а также мои перенаправления после правильной работы входа/выхода из системы?
Спасибо за любую помощь.
Включает ли кеширование страницы конкретную информацию пользователя? – Swards
Интересная проблема, просто любопытно, зачем вам нужен код кэширования страницы в AboutController. Попытка следовать вашим концептуальным намерениям. – fontno
@Swards: кэширование страницы не содержит конкретной информации пользователя. У меня есть ajax, который загружает все содержимое для конкретного пользователя после завершения загрузки страницы. – newtorails