Sapui5 sapgateway&;UI5:如何重置CSRF令牌=

Sapui5 sapgateway&;UI5:如何重置CSRF令牌=,sapui5,abap,sap-gateway,Sapui5,Abap,Sap Gateway,我需要在OData模型中重置CSRF令牌。基于UI5文档,我尝试使用refreshSecurityToken(fnsucture?、fnError?、bAsync?函数来实现这一点。() 我编写了以下代码: var oDataModel = this.getOwnerComponent().getModel("ZMDM_ODATA_FILE_SRV"); oDataModel.setTokenHandlingEnabled(true); oDataModel.refreshSec

我需要在OData模型中重置CSRF令牌。基于UI5文档,我尝试使用
refreshSecurityToken(fnsucture?、fnError?、bAsync?
函数来实现这一点。()

我编写了以下代码:

var oDataModel = this.getOwnerComponent().getModel("ZMDM_ODATA_FILE_SRV");
    oDataModel.setTokenHandlingEnabled(true);
    oDataModel.refreshSecurityToken(function() {
        var token = oDataModel.getSecurityToken();
        console.log(token);
        // can upload the file if token reset
    });
问题是这个令牌在30分钟内没有重置,这就是我们的会话超时。实际上,它在会话生存期内有效。我甚至检查了以下链接:

实际上很多人都有这个问题,但我找不到一个重置令牌的明确解决方案。我在前端完成了所有必要的步骤,以便发送一个Head请求来停止令牌。我认为后端网关设置或ABAP编码缺少一些内容


我该怎么办

您可以通过事务SM05删除CSRF令牌(每个用户/令牌)。

似乎您需要在前端应用程序中设置一个间隔,以便更频繁地获取和更新令牌。但这是一个自相矛盾的现象:如果后端将超时时间设置为30分钟,为什么要让它保持更长的时间

SecurityToken超时对于确保正在使用活动会话以及没有人“忘记”该会话并使系统处于打开状态和未被监视/未使用状态非常重要

但是,如果确实需要保持前端会话始终可用并强制后端也可用,则可以设置interval()获取CSRF并更新应用程序:

var oDataModel = this.getOwnerComponent().getModel("ZMDM_ODATA_FILE_SRV");
oDataModel.setTokenHandlingEnabled(true);
var fnRefreshToken = oDataModel.refreshSecurityToken(function() {
    var token = oDataModel.getSecurityToken();
    console.log(token);
    // can upload the file if token reset
});
window.setInterval(function(){
    fnRefreshToken;
}, 1800000); // where 1.800.000 miliseconds represents 30 minutes
然后,您应该将您的新令牌存储在token变量中,并在令牌重置时允许上载

亲切问候,
亨里克·马托斯(Henrique Mattos)

我会查一查。重置CSRF令牌而不删除的任何其他功能模块?重置是什么意思?为什么要准确地重置令牌?需要重置令牌才能将新文件发送到CMS。不,每次调用abap方法CREATE_STREAM时都不需要重置令牌。你可以重复使用你的代币。如果您的后端不接受您刚才生成的令牌,则说明其他问题。