在SAP HANA Cloud Portal中处理会话超时

2020-08-18 02:51发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

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

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

 jQuery(document).ajaxComplete(function(e,jqXHR){
   如果(jqXHR.getResponseHeader(" com.sap.cloud.security.login")){
     alert("会话已过期,应重新加载页面。");
     jQuery.sap.delayedCall(0,this,function(){
       location.reload(true);
     });
   }
 });
 

上面的代码是否仅适用于Ajax和oData调用。 会话期满后,我们希望在每种情况下都将用户重定向到登录页面。

对于oData调用和Ajax调用都有直接的方法来实现吗?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

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

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

 jQuery(document).ajaxComplete(function(e,jqXHR){
   如果(jqXHR.getResponseHeader(" com.sap.cloud.security.login")){
     alert("会话已过期,应重新加载页面。");
     jQuery.sap.delayedCall(0,this,function(){
       location.reload(true);
     });
   }
 });
 

上面的代码是否仅适用于Ajax和oData调用。 会话期满后,我们希望在每种情况下都将用户重定向到登录页面。

对于oData调用和Ajax调用都有直接的方法来实现吗?

付费偷看设置
发送
3条回答
天桥码农
1楼 · 2020-08-18 03:08.采纳回答

你好迪帕克,

检查 sap.ui.model.odata.ODataModel sap.ui.model.odata.v2.ODataModel 或更高版本(如果您已在使用)。

无论如何,您都会看到事件列表,可以向其中添加事件处理程序。 一种尝试可以是requestFailed,可以这样添加:

 var oModel = new sap.ui.model.odata.ODataModel(...);
 oModel.attachRequestFailed(this.handleRequestFailed,this);
 

定义处理程序,例如:

 handleRequestFailed:function(oEvent){
     console.log(oEvent);
 } 
樱桃小丸子0093
2楼-- · 2020-08-18 03:03

感谢Boaz,

您能否帮助我实现oData调用的相同功能。 我尝试使用下面的代码,但是即使使会话无效,该代码也不会达到oMetadata Failed。

 jQuery.sap.intervalCall(5000,this,function(){
 var serviceURL = this.getManifestEntry("/img/sap.app/dataSources/domainPath/uri");
 var sessionCheckURL = serviceURL +"/BRS/HAA/services/AppConfig.xsodata";
 var oSessionChckModel = new sap.ui.model.odata.ODataModel(sessionCheckURL);
 oSessionChckModel.attachMetadataFailed(function(oEvent){
 警报("会话已过期");
 }, 这个);
 oSessionChckModel.attachMetadataLoaded(function(oEvent){
 警报("会话有效");
 });
 }); 

它永远不会进入attachMetadataFailed事件,并且在MetadataLoaded事件内部,我无法在标题中找到参数" com.sap.cloud.security.login"。

我测试会话超时的方法如下:

  1. 运行SAPUI5应用。
  2. 注销HANA Cloud Platform主控室,以使其在IDP级别(即每个单个应用程序)上的会话无效。
  3. 每5秒钟对示例服务进行一次oData调用,以检查会话是否有效。

我应该使用其他方法吗?

最好的问候

Deepak

3楼-- · 2020-08-18 03:03

嗨Deepak,

实际上,您提到的代码在 https://help.hana.ondemand.com/help/frameset.htm?de16793b391a4bcfae6096f34433de76.html 与Ajax调用有关。 但是,它不处理oData调用,您可以为每个此类调用分别处理oData调用,以便重定向回登录页面。 我不知道有任何直接方法可以实现这两个调用。

最好的问候,
Boaz

一周热门 更多>