2017-01-12 1 views
2

Ich arbeite mit HCP Portal SAPUI5-Anwendungen. Ich muss die Sitzung vor jedem Datenanruf an das Back-End überprüfen, damit ich den Benutzer zurück auf die Anmeldeseite umleiten kann.Sitzung vor dem Ausführen von oData-Aufrufen überprüfen - HANA Cloud Portal

In der HANA Cloud-Dokumentation wird der Code unten bereitgestellt:

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); 
 
    }); 
 
    } 
 
});

Aber der obige Code funktioniert nur für Ajax-Aufrufe. Ich bin mir nicht sicher, ob das Gleiche auch für Odata funktioniert. Wir möchten den Benutzer in jedem Szenario nach Ablauf der Sitzung umleiten. Gibt es eine direkte Methode, um dies sowohl für Datenanrufe als auch für Ajax-Aufrufe zu erreichen?

Antwort

0

Sie in der Funktion Erfolg Rückruf überprüfen für den Wert des HTTP-Response-Header "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) 
     }   
    } 
    }); 

Wenn haben gesehen, in denen Fälle auf einem Timeout der Erfolg Callback-Funktion genannt wurde; aber ich habe auch Fälle gesehen, in denen die Fehlerrückruffunktion aufgerufen wurde; Daher überprüfe ich in beiden Fällen eine Zeitüberschreitung.

Die Timeout-Behandlung könnte ein Dialogfeld sein, das dem Benutzer mitteilt, dass die Sitzung abgelaufen ist und ihn fragt, ob er die Anwendung neu starten möchte.

Verwandte Themen