如何从 ui5 应用程序注销并重定向到另一个 ui5 应用程序登录?

Posted

技术标签:

【中文标题】如何从 ui5 应用程序注销并重定向到另一个 ui5 应用程序登录?【英文标题】:How to Logout from a ui5 app and get redirected to another ui5 app login? 【发布时间】:2020-03-03 19:43:01 【问题描述】:

我开发了各种 UI5 应用,如果我想注销其中一个,所有 UI5 应用都应该注销。

例如。第一个应用程序是一个菜单。所以我登录第一个菜单应用程序。从这个应用程序有一个链接到另一个应用程序。现在我想从这个应用程序中注销并想要将重定向链接指向菜单登录。

我有以下代码用于注销第二个应用程序(不是菜单应用程序):

    handleLogout: function (oEvent) 
      $.ajax(
        type: "GET",
        url: "/sap/.../logoff", 
      ).done(function (data)  
        if (!document.execCommand("ClearAuthenticationCache")) 
          window.localStorage.clear()
          $.ajax(
            type: "GET",
            url: "/sap/.../logoff", 
            username: '', 
            password: '',
            statusCode: 
              401: function () 
              
            ,
            error: function () 
            
          );
        
      );
      var myVar = setInterval(function (oEvent) 
        window.location.replace("/sap/...->link to the menu<-");
      , 100);
    ,

这段代码的结果是,我被重定向到菜单应用程序而不是它的登录。我猜是因为还有登录。

是否有机会或某种代码让我可以注销所有现有的 ui5 应用程序? 它与缓存设置有关吗?

【问题讨论】:

登录是如何实现的?如果是单点登录,注销后重定向后用户会自动登录... 这是标准的 sap fiori 登录。这是 SSO。 没有标准。如果是 SSO,什么协议? SAML、OAuth、Kerberos 等? 要在 SAP 中为自定义 ui5 应用设置“标准”登录,您必须调整服务配置(事务 sicf) 【参考方案1】:

解决方案与您的会话机制有关。你如何管理用户会话?您使用的是 cookie 还是本地存储? 例如,您需要在 cookie 选项的注销过程中使 cookie 无效。

检查你的 ClearAuthenticationCache 方法,它看起来像使用本地存储方法。

【讨论】:

我使用的是cookie而不是本地存储...您知道如何在注销过程中使cookie无效吗? 您可以在服务端发送具有相同名称和过期日期的新cookie到当天之前。您也可以尝试在重定向之前将其从客户端删除。 好的,我发现了一些东西:document.cookie = name+'=;最大年龄=-99999999;';我想“名称”应该是我的 cookie 名称。我会试一试 注意:某些浏览器会阻止在客户端更改 cookie。 好的,我可以删除 cookie,但是,注销仍然不起作用(我在 chrome 中测试)

以上是关于如何从 ui5 应用程序注销并重定向到另一个 ui5 应用程序登录?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Laravel 5.3 注销并重定向到登录页面?

如果会话过期,如果没有活动并重定向登录页面,则烧瓶注销

在 Flutter 中使用 Firebase/Google 登录时无法注销并重定向到 LoginPage

单击注销按钮终止会话并重定向到登录页面

Django:HTML表单提交调用函数并重定向到另一个页面

重新启动应用程序并重定向到 C# 中的特定表单