2016-06-20 6 views
0

私はDevise gemを認証に使用しています。私は指定された時間に見たユーザー活動がない場合、ログインページにリダイレクトするためにdeviseのタイムアウト可能な機能を使用しました。この問題は、主にAjaxリクエストが送信され、セッションのタイムアウトが発生したときにUIが応答しなくなります。以下は私の設定です:Userモデルで :レールAJAXリクエストが失敗しても、タイムアウト可能なタイムアウトがページをリロードしない

devise :timeoutable 

def timeout_in 
    if self.role.name == "Admin" 
    30.minutes 
    end 
end 

これは、タイムアウトを行います(ユーザーの活動が見られない場合、セッションは30分後に期限が切れます)。しかし、サインインページを表示するためにページを自動リフレッシュしません。私はセッションが期限切れになっているかどうか、期限が切れている場合は、応答のないUIを避けるために、主にajaxリクエストのためにページをリロードするだけで定期チェックを行うjavascriptを使用しようとしました。しかし、これはどちらもうまくいかない。すべてのヘルプはAJAX要求は401つまり、不正なトークンエラーが発生するたびに、リフレッシュ/ページをリロード..

答えて

0

をいただければ幸いです。

var jqXHR = $.ajax({ 
      url: "/validate_barcode", 
      type: "GET", 
      dataType: "json", 
      data: {barcode: barcode}, 
      }).done(function (data,status,jqXHR) { 
       console.log("Success"); 
      }).fail(function (jqXHR,status,err) { 
       // alert("Promise error callback."); 
       if(jqXHR.status == 401){ 
       location.reload(); 
       } 
      }) 

これは、セッションTIMEDOUT場合は、ログイン画面を表示するページを働いたとリロードされ、 UIが応答しなくなりました。

+0

奇妙な;私はこれを私の目的で実装しようとしました - タイマーを使ってajax pingを実装し、401の戻り値を返したら再描画を行いますが、もちろん接続を維持しています。どのように実装するのがベストかわからない。 – grimmwerks

関連する問題