防止在未成功验证的情况下显示 UI5 应用程序内部页面

Prevent showing the UI5 app internal page without successful authentication

OpenUI5版本:1.86 Browser/version (+device/version): Chrome 开发

身份验证后,我验证用户会话:

if (isUserSessionValid) {
    const oRouter = UIComponent.getRouterFor(this);
    oRouter.navTo("overview");
} else {
    this.getOwnerComponent().openAuthDialog();
}

如果 isUserSessionValid 为真,则我将用户转发到内部页面,否则显示登录对话框。

但是,问题是用户可以在 DevTools 中更改 isUserSessionValid 的值,然后转发到 UI5 应用程序内部页面。当然,由于缺少有效会话,不会显示任何业务数据,只是一个空的 UI5 应用程序模板,但我想阻止这样的屏幕。

如果它是一个经典的网络应用程序,我会发送一个适当的服务器响应,并重定向到登录页面(例如 res.redirect(403, "/login");)。但是,如果我理解正确的话,因为我发送的是异步请求,所以一个普通的 res.redirect 不会成功,我需要在 UI5 客户端上实现一个重定向逻辑,它可以被操纵和被用户绕过。

如何防止在 UI5 中操纵视图导航并确保未经授权的用户无法获取任何 UI5 应用程序代码?

来自 SAP 的 answer

If you want to prevent an unauthorized user from accessing the client-side code (e.g. view/controller) you need to enforce authorization on the server also for those static files. When bundling the application code you also need to ensure that those files are separate from the "public" files. One approach would be to have 2 separate components, one for the public page/auth dialog and one for the actual application.