私は、アプリケーションをdeviseと30分のセッションタイムアウトで保護しています。すべてのユーザーが通常のナビゲーションでうまくいきます。ユーザーがタイムアウトしたときにリンクをクリックすると、「セッションが切れました。ログインして続行してください。」というメッセージが表示され、ログイン画面に戻ります。DevTimeを使用したRoRでのセッションタイムアウトメッセージ
しかし、私は多くの場所でajaxを持っています。セッションがタイムアウトしてユーザーがajax操作を実行した場合、私はバックグラウンドで401エラーで黙って失敗するのではなく、上記と同じ動作が必要です。
これまでのところ、私は、各ページでこのjqueryのコード401Sをキャッチし、再ロードする必要があります。
$(document).ajaxError(function(e, error) {
switch(error.status) {
case 401: {
// unauthorised (possible timeout)
location.reload();
break;
}
をそれは十分に動作しますが、迷惑な問題がある:
AJAX要求ヒットが最初に考案しているので私のアプリケーションがページをリロードしてログインページに向かいますが、タイムアウトメッセージが表示されない場合は、認証されていない「サインインまたはサインアップしてから続行する必要があります」というメッセージが表示されます。メッセージ。
2番目のリクエストdeviseにタイムアウトメッセージが表示されるようにする方法はありますか?