Mam aplikację zabezpieczoną przez programowanie i limit czasu sesji wynoszący 30 minut. Przy opracowywaniu wszystko działa dobrze dla normalnej nawigacji, jeśli użytkownik kliknie na link po przekroczeniu limitu czasu, zostanie przekierowany z powrotem do ekranu logowania z komunikatem "Twoja sesja wygasła, zaloguj się ponownie, aby kontynuować.", Doskonała.Limit czasu sesji w RoR przy użyciu narzędzia Devise
Jednak mam ajax w wielu miejscach. Jeśli sesja zostanie przekroczona, a użytkownik wykona operację ajax, chcę zachować to samo zachowanie, co powyżej, a raczej po cichu z błędem 401 w tle.
tej pory mam ten kod jquery na każdej stronie, aby złapać 401s i przeładować:
$(document).ajaxError(function(e, error) {
switch(error.status) {
case 401: {
// unauthorised (possible timeout)
location.reload();
break;
}
To działa dość dobrze, ale nie jest to denerwujące problem:
Ponieważ Ajax żądania odsłon opracować pierwszy , gdy moja aplikacja ponownie załaduje stronę, zostanie przekierowana do strony logowania, ale nie widzę komunikatu przekroczenia limitu czasu, widzę nieuwierzytelnione "Musisz się zalogować lub zarejestrować przed kontynuowaniem." wiadomość.
Czy istnieje sposób, aby na drugiej próbie nadal wyświetlać komunikat o przekroczeniu limitu czasu?