您可以将路由信息保存在服务器上,并在初始化时将其提供给应用程序。
例如。在您的外壳视图模型的激活方法中
外壳.js
define(['durandal/system', 'plugins/router', 'durandal/app', 'services/datacontext'],
function (system, router, app, datacontext) {
var routeInfo = ko.observable();
var shell = {
activate: activate,
router: router
};
return shell;
//#region Internal Methods
function activate() {
app.title = "Sample App";
return boot();
}
function boot() {
return datacontext.getRouteInformation(routeInfo).then(function() {
return router.map(routeInfo()).buildNavigationModel().mapUnknownRoutes('error', 'Error').activate();
});
}
//#endregion
});
我的 datacontext.getRouteInformation() 根据当前用户的安全上下文获取路由信息的 json 数组,并填充 routeInfo 可观察值。然后将该 observable 传递给 map 函数以创建用户有效路线等。
我知道这并没有完全“锁定” html 文件等,但是我的所有控制器和操作都具有授权属性,因此数据受到保护。