在我的UI5应用程序中,我必须确保,如果用户关闭一个选项卡,然后打开一个新的选项卡,并将直接链接粘贴到该页面的内部页面,则该应用程序会将其路由到登录页面。
这里是示例:
https://myapp/#/productsList
https://myapp.com
我实现了以下路由逻辑:
"routes": [{
"pattern": "",
"name": "login",
"target": "login"
},…]
…
"targets": {
"login": {
"viewID": "login",
"viewName": "Login"
},…
}
如何使用本机UI5工具实现这种行为?
答案 0 :(得分:1)
我认为这不能通过在 Manifest.json 中配置路由来实现。通常,用户的登录和授权应由服务器本身处理:例如Apache,Tomcat或Nginx,或任何其他OpenID或OAuth解决方案。例如,Nginx documentation。
回到您的问题,这是一个简单的解决方案,用于检查用户是否已经通过/已经看到登录页面。我将通过以下方式实现它。
在 Components.js 中注册模型loginModel
:
let oLoginModel = new JSONModel({
bUserLoggedIn = false;
});
this.setModel(oLoginModel, "loginModel");
如果用户已经查看/通过了您的登录页面,请将属性设置为true
。
在 Manifest.json 中定义其他路线。在视图的控制器中,在onInit
上附加一个侦听器,并检查用户是否已查看登录页面,如果没有浏览则直接登录:
onInit: function() {
this.getRouter().getRoute("sampleRoute")
.attachPatternMatched(this._onRouteMatched, this);
},
_onRouteMatched: function(oEvent) {
if (!this.getModel("loginModel").getProperty("/bUserLoggedIn")) {
let oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.navTo("login");
}
},
希望有帮助。