在进行 oData 调用之前检查会话 - HANA 云门户
Check session before making oData calls - HANA Cloud Portal
我正在使用 HCP 门户 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 调用,是否有直接的方法来实现它?
您可以在 成功回调函数 中检查 HTTP 响应的值 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)
}
}
});
如果遇到过超时调用成功回调函数的情况;但我也看到过错误回调函数被调用的情况;因此我在这两种情况下都检查超时。
超时处理可能是一个对话框,告诉用户 session 已超时并询问他是否要重新启动应用程序。
我正在使用 HCP 门户 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 调用,是否有直接的方法来实现它?
您可以在 成功回调函数 中检查 HTTP 响应的值 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)
}
}
});
如果遇到过超时调用成功回调函数的情况;但我也看到过错误回调函数被调用的情况;因此我在这两种情况下都检查超时。
超时处理可能是一个对话框,告诉用户 session 已超时并询问他是否要重新启动应用程序。