UI5应用程序和App Router退出并再次登录的问题

2020-08-22 09:28发布

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

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


专家您好,

我们在SAP Cloud Platform Cloud Foundry上部署了三个应用程序。 应用路由器,UI应用程序(UI5)和服务应用程序(JAVA)。

下面是简单的应用程序体系结构。

复制步骤:

1。 用户通过App路由器登录到应用程序。 UI5应用程序的主页显示成功。 来自后端Java应用程序的所有数据均已成功检索。 我们还可以在App路由器中获取登录用户信息。

https://***-approuter -***。cfapps.eu10.hana.ondemand.com/

2。 点击注销按钮以退出

3。 使用应用路由器URL再次登录

https://***-approuter -***。cfapps.eu10.hana.ondemand.com/

问题是我们可以打开应用程序主页,而无需再次登录。 但是没有登录用户信息。 如果刷新页面,用户将被重定向到XSUAA服务的登录页面。

如果通过以下URL直接访问Java应用程序的服务URL,我将被重定向到登录页面。

https://***-approuter-***。 cfapps.eu10.hana.ondemand.com/backend/hello

我认为问题是UI5应用程序的缓存。 但是我不知道如何解决它。 你能给些建议吗?

应用路由器的xs-app.json配置

 {
 " welcomeFile":" frontend/",
 "登出": {
 " logoutEndpoint":"/img/logout",
 " logoutPage":"/logout.html"
  },
 " authenticationMethod":"路由",
 "路线":[
  {
 " source":" ^/backend/(.*)$",
 " target":" $ 1",
 "目的地":"服务",
 " authenticationType":" xsuaa"
  },
  {
 " source":" ^/logout.html $",
 " localDir":"资源",
 " authenticationType":"无",
 " cacheControl":"无缓存"
  },
  {
 " source":" ^/frontend/(.*)$",
 " target":" $ 1",
 "目标":"前端",
 " authenticationType":" xsuaa",
 " cacheControl":"无缓存"
  }
  ]
 }
 

(9.1 kB)

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

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


专家您好,

我们在SAP Cloud Platform Cloud Foundry上部署了三个应用程序。 应用路由器,UI应用程序(UI5)和服务应用程序(JAVA)。

下面是简单的应用程序体系结构。

复制步骤:

1。 用户通过App路由器登录到应用程序。 UI5应用程序的主页显示成功。 来自后端Java应用程序的所有数据均已成功检索。 我们还可以在App路由器中获取登录用户信息。

https://***-approuter -***。cfapps.eu10.hana.ondemand.com/

2。 点击注销按钮以退出

3。 使用应用路由器URL再次登录

https://***-approuter -***。cfapps.eu10.hana.ondemand.com/

问题是我们可以打开应用程序主页,而无需再次登录。 但是没有登录用户信息。 如果刷新页面,用户将被重定向到XSUAA服务的登录页面。

如果通过以下URL直接访问Java应用程序的服务URL,我将被重定向到登录页面。

https://***-approuter-***。 cfapps.eu10.hana.ondemand.com/backend/hello

我认为问题是UI5应用程序的缓存。 但是我不知道如何解决它。 你能给些建议吗?

应用路由器的xs-app.json配置

 {
 " welcomeFile":" frontend/",
 "登出": {
 " logoutEndpoint":"/img/logout",
 " logoutPage":"/logout.html"
  },
 " authenticationMethod":"路由",
 "路线":[
  {
 " source":" ^/backend/(.*)$",
 " target":" $ 1",
 "目的地":"服务",
 " authenticationType":" xsuaa"
  },
  {
 " source":" ^/logout.html $",
 " localDir":"资源",
 " authenticationType":"无",
 " cacheControl":"无缓存"
  },
  {
 " source":" ^/frontend/(.*)$",
 " target":" $ 1",
 "目标":"前端",
 " authenticationType":" xsuaa",
 " cacheControl":"无缓存"
  }
  ]
 }
 

(9.1 kB)
付费偷看设置
发送
7条回答
半个程序猿
1楼 · 2020-08-22 10:05.采纳回答

此问题已通过使用SAP UI5应用程序中的HTML5存储库解决。

请记住在应用路由器配置中添加属性" cacheControl"。

骆驼绵羊
2楼-- · 2020-08-22 10:06

感谢您的回复。 但这并不能解决此问题。

嗨,杰里,

也许这很容易解决,但是您是否尝试过这样设置注销? 做

"注销":{
 " logoutEndpoint":"/img/do/logout",
 " logoutPage":"/logout.html"
 } 

亲切的问候,

jovirus
4楼-- · 2020-08-22 09:59

在我的情况下,它仍然不起作用。 还是非常感谢你。

如果我在chrome隐身窗口中打开应用程序,我将被重定向到登录页面。 我猜主页是由浏览器以某种方式缓存的。 当我再次访问它时,将显示缓存的页面。

奄奄一息的小鱼
5楼-- · 2020-08-22 10:19

嗨,Jerry,

很抱歉听到这个消息没有帮助。

也许您可以尝试类似的方法。 它对我有用。

 {
 " welcomeFile":"/img/cp.portal",
 " authenticationMethod":"路由",
 "登出":{
 " logoutEndpoint":"/img/do/logout",
 " logoutPage":"/img/logout.html"
 },
 "路线":[{
 " source":" ^/logout.html(。*)$",
 " target":" logoff.html $ 1",
 " localDir":" ./static/",
 " authenticationType":"无",
 " csrfProtection":false
 },
 

您只需要预见应用路由器内部的静态文件夹以及logoff.html文件即可。

然后,您应该在注销后重定向到注销页面。 我不会再说"缓存"问题了。

也许您可以尝试一下?

亲切的问候,

暮风yp
6楼-- · 2020-08-22 09:58

非常感谢您调查此问题。

我发现这里有两种情况。

1。 索引页或主页位于应用路由器的文件夹中(不是我的情况)

它适用于以下设置。

" cacheControl":"无缓存" 

xs-app.json的整个配置

 {
 " welcomeFile":"/index.html",//index.html
 "登出": {
 " logoutEndpoint":"/img/do/logout",
 " logoutPage":"/logout.html"
  },
 " authenticationMethod":"路由",
 "路线":[
  {
 " source":" ^/backend/(.*)$",
 " target":" $ 1",
 "目的地":"服务",
 " authenticationType":" xsuaa"
  },
  {
 " source":" ^/logout.html $",
 " localDir":"资源",
 " authenticationType":"无",
 " cacheControl":"无缓存",
 " csrfProtection":false
  },
  {
 " source":" ^/frontend/(.*)$",
 " target":" $ 1",
 "目标":"前端",
 " authenticationType":" xsuaa",
 " cacheControl":"无缓存"
  },
  {
 " source":" ^/index.html $",
 " localDir":"资源",//应用路由器的本地目录
 " authenticationType":" xsuaa",
 " cacheControl":"无缓存"
  }
  ]
 }
 

2。 主页位于前端应用程序中(我的情况)

它不适用于设置。

" cacheControl":"无缓存" 

在这种情况下,欢迎文件是"/img/frontend/",它被映射到路由部分中的前端应用程序。 它将打开前端应用程序的主页。

 {
     " welcomeFile":"/img/frontend/",//前端网址
     "登出": {
         " logoutEndpoint":"/img/do/logout",
         " logoutPage":"/logout.html"
     },
     " authenticationMethod":"路由",
     "路线":[
         {
             " source":" ^/backend/(.*)$",
             " target":" $ 1",
             "目的地":"服务",
             " authenticationType":" xsuaa"
         },
         {
             " source":" ^/logout.html $",
             " localDir":"资源",
             " authenticationType":"无",
             " cacheControl":"无缓存",
             " csrfProtection":false
         },
         {
             " source":" ^/frontend/(.*)$",//定位到前端应用程序
             " target":" $ 1",
             "目标":"前端",
             " authenticationType":" xsuaa",
             " cacheControl":"无缓存"
         }
     ]
 } 

我们需要找到案例2的解决方案。

骆驼绵羊
7楼-- · 2020-08-22 10:03

我刚刚找到了一个有关approuter和缓存的不错的博客:

https://blogs.sap.com/2019/08/23/sapui5-sessions-and-logout-fine-grained-control-of-approuter-caching/

也许可以帮上忙吗?

它是approuter的xs-app.json中的缓存部分(cacheControl):

 {
         " source":" ^/index.html $",
         " localDir":"资源",
         " authenticationType":" xsuaa",
         " cacheControl":"无缓存"
 } 

我看到的是您已经将它放入cacheControl的xs-app.json中。

但是,如果没有其他模式匹配,也许您可​​以尝试提供最终路线?

那么要添加一个*带有无缓存的全路由吗?

一周热门 更多>