Tôi có một ứng dụng được bảo mật bằng cách đặt ra và hết thời gian chờ của phiên là 30 phút. Với tất cả mọi thứ đang hoạt động tốt cho điều hướng bình thường, nếu người dùng nhấp vào liên kết khi hết thời gian, họ sẽ được chuyển hướng trở lại màn hình đăng nhập với thông báo "Phiên của bạn đã hết hạn, vui lòng đăng nhập lại để tiếp tục".Thông báo hết thời gian của phiên trong RoR bằng cách sử dụng Devise
Tuy nhiên tôi có ajax ở nhiều nơi. Nếu phiên làm việc hết giờ và người dùng thực hiện thao tác ajax, tôi muốn có hành vi tương tự như ở trên thay vì âm thầm không thành công với lỗi 401 trong nền.
Cho đến nay tôi có mã jquery này trên mỗi trang để bắt 401s và tải lại:
$(document).ajaxError(function(e, error) {
switch(error.status) {
case 401: {
// unauthorised (possible timeout)
location.reload();
break;
}
Nó hoạt động khá tốt, nhưng có một vấn đề gây phiền nhiễu:
Vì hit yêu cầu ajax nghĩ ra đầu tiên , khi ứng dụng của tôi tải lại trang, tôi được chuyển hướng đến trang đăng nhập, nhưng tôi không thấy thông báo hết thời gian chờ, tôi thấy chưa được xác thực "Bạn cần đăng nhập hoặc đăng ký trước khi tiếp tục." thông điệp.
Có cách nào để đảm bảo rằng yêu cầu thứ hai đưa ra vẫn hiển thị thông báo hết thời gian chờ không?