2017-01-12 5 views
2

私はHCP Portal SAPUI5アプリケーションを使用しています。すべてのデータコールがバックエンドに行われる前にセッションをチェックする必要があるので、ユーザーをログオンページに戻すことができます。 HANA CloudのドキュメントでoDataコールを作成する前にセッションを確認する - HANA Cloud Portal

は、以下のコードが提供されます。

jQuery(document).ajaxComplete(function(e, jqXHR) { 
 
    if (jqXHR.getResponseHeader("com.sap.cloud.security.login")) { 
 
    alert("Session is expired, page shall be reloaded."); 
 
    jQuery.sap.delayedCall(0, this, function() { 
 
     location.reload(true); 
 
    }); 
 
    } 
 
});

しかし、上記のコードは、Ajaxの呼び出しのために動作します。私はodataのために同じものが同様に働くかどうか分からない。セッションの終了後、すべてのシナリオでユーザーをリダイレクトする必要があります。 データコールとAjaxコールの両方を実現する直接の方法はありますか?

答えて

0

あなたは、HTTPレスポンスヘッダ"com.sap.cloud.security.login"の値を成功コールバック関数で確認できます。タイムアウト時に成功コールバック関数が呼び出された例を見てきた場合は

sap.ui.getCore().getModel().read("/SOME_ENTITYSet", { 

    success: function(odata, response) { 
     if (response.headers["com.sap.cloud.security.login"] === "login-request") { 
      // Timeout handling 
     } else { 
      // Process data in argument odata 
     } 
    }, 

    error: function(error) { 
     if (response.headers["com.sap.cloud.security.login"] === "login-request") { 
      // Timeout handling 
     } else { 
      // Show error message (for non-timeout errors) 
     }   
    } 
    }); 

。私はエラーコールバック関数が呼び出されたケースも見ています。したがって、両方の場合にタイムアウトがないかチェックインします。

タイムアウト処理は、セッションがタイムアウトしたことをユーザーに通知し、アプリケーションを再起動するかどうかを尋ねるダイアログです。

関連する問題