SAPUI5限制页面可见性

nis*_*v4n 6 routing authorization sapui5

有什么方法/最佳实践来隐藏SAPUI5中用户的不可用页面?

让我们来看一个例子。我有一个带有用户登录页面的复杂应用程序。客户可以在此处登录该应用程序,并从后端系统检索其角色数据。基于这些角色,不允许某些用户创建新对象。只有登录的用户才能看到应用程序页面。我正在使用路由,因此编辑等功能也可以通过直接链接访问。

当前,我正在Component.js中使用onRouteMatched事件处理程序,该事件处理程序将检查当前的用户会话存储。如果未找到用户会话,它将请求重定向到登录页面。

问题在于,在导航到登录页面之前,它会显示请求的页面一到两秒钟。真的很丑。

我应该在哪里实现这种功能?此用例是否有任何钩子方法?

我认为我需要在显示与给定路由匹配的视图并将调用重定向到登录页面之前调用的hook方法。不幸的是,我在本主题中找不到任何有用的文档。

谢谢!

csc*_*uff 0

不幸的是,据我所知,没有简单的钩子。我很想看到一个beforeRouteMatched或类似的东西sap.ui.core.routing.Router,但目前还没有......

无论如何,你有多种可能性来实现这一目标。我能想到的最有希望的解决方案是这样的:

根据授权动态添加您的路线

首先将您的路由配置存储在一个简单的对象中,并在授权调用返回后根据用户授权使用路由器的addRoute方法动态添加允许的路由。您唯一需要额外注意的是访问应用程序的初始路径。您必须存储该哈希值,直到设置路线配置并在添加路线后重新触发初始导航。使用HashChanger.setHash来实现这一点。

笔记

客户端授权检查永远不会保存,需要在所有后端服务中进行双重检查!