在进行oData调用之前检查会话 - HANA Cloud Portal

时间:2017-01-12 06:57:15

标签: sapui5 hana-cloud-platform

我正在使用HCP Portal SAPUI5应用程序。我需要在对后端进行每次数据调用之前检查会话,以便我可以将用户重定向回登录页面。

在HANA Cloud文档中,提供了以下代码:



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调用?

1 个答案:

答案 0 :(得分:1)

您可以检查成功回调函数以获取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)
       }         
     }
  });  

如果遇到超时的情况,则调用成功回调函数;但我也看到了调用错误回调函数的情况;因此我检查了两种情况都是暂停。

超时处理可能是一个对话框,告诉用户会话超时并询问他是否要重新启动应用程序。