Por padrão, quando a sessão do dispositivo já expirou, se o usuário enviar um dispositivo de solicitação AJAX respondendo com o erro 401 não autorizado, em vez de redirecionar.
Se você deseja redirecionar para qualquer página, você pode usar este pequeno hack.
Configuração do Devise:
config.http_authenticatable = false
config.http_authenticatable_on_xhr = false
config.navigational_formats = ["*/*", :html, :js]
config.warden do |manager|
manager.failure_app = CustomFailureApp
end
Coloque custom_failure_app.rb
em sua pasta lib:
class CustomFailureApp < Devise::FailureApp
def redirect_url
if request.xhr?
send(:"new_#{scope}_session_path", :format => :js)
else
super
end
end
end
E depois disso, adicione-o sessions/new.js.haml
à pasta de visualizações do dispositivo. Coloque em seu redirecionamento de visão ou outra lógica que você deseja executar. Redirecionamento de página raiz simples, por exemplo:
:javascript
window.location = "/"