限制直接访问SAPUI5应用中的内部页面
Restrict direct access of internal pages in SAPUI5 application
在我的 UI5 应用程序中,我必须确保如果用户关闭一个选项卡,然后打开一个新选项卡并将直接 link 粘贴到那里的内部页面,应用程序会将他路由到登录页面。
示例如下:
- 用户进入以下视图并复制直接 link,例如
https://myapp/#/productsList
- 用户关闭选项卡
- 用户打开一个新选项卡并将 link 粘贴到那里。
我想确保应用程序会将他路由到登录页面:https://myapp.com
我实现了以下路由逻辑:
"routes": [{
"pattern": "",
"name": "login",
"target": "login"
},…]
…
"targets": {
"login": {
"viewID": "login",
"viewName": "Login"
},…
}
如何使用本机 UI5 工具实现此类行为?
我认为这不能通过在Manifest.json中配置路由来实现。通常,用户的登录和授权应由服务器本身处理:例如 Apache、Tomcat 或 Nginx,或由任何其他 OpenID 或 OAuth 解决方案处理。例如,Nginx documentation.
回到您的问题,一个检查用户是否已经 passed/has 看到登录页面的简单解决方案。我会通过以下方式实现它。
在Components.js注册一个模型loginModel
:
let oLoginModel = new JSONModel({
bUserLoggedIn = false;
});
this.setModel(oLoginModel, "loginModel");
如果用户有 seen/passed 您的登录页面,请将 属性 设置为 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");
}
},
希望对您有所帮助。
在我的 UI5 应用程序中,我必须确保如果用户关闭一个选项卡,然后打开一个新选项卡并将直接 link 粘贴到那里的内部页面,应用程序会将他路由到登录页面。
示例如下:
- 用户进入以下视图并复制直接 link,例如
https://myapp/#/productsList
- 用户关闭选项卡
- 用户打开一个新选项卡并将 link 粘贴到那里。
我想确保应用程序会将他路由到登录页面:https://myapp.com
我实现了以下路由逻辑:
"routes": [{
"pattern": "",
"name": "login",
"target": "login"
},…]
…
"targets": {
"login": {
"viewID": "login",
"viewName": "Login"
},…
}
如何使用本机 UI5 工具实现此类行为?
我认为这不能通过在Manifest.json中配置路由来实现。通常,用户的登录和授权应由服务器本身处理:例如 Apache、Tomcat 或 Nginx,或由任何其他 OpenID 或 OAuth 解决方案处理。例如,Nginx documentation.
回到您的问题,一个检查用户是否已经 passed/has 看到登录页面的简单解决方案。我会通过以下方式实现它。
在Components.js注册一个模型loginModel
:
let oLoginModel = new JSONModel({
bUserLoggedIn = false;
});
this.setModel(oLoginModel, "loginModel");
如果用户有 seen/passed 您的登录页面,请将 属性 设置为 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");
}
},
希望对您有所帮助。