首先,我很抱歉,但我在npm中没有很多exp,所以请原谅我^^
我有一个使用角度的http服务器。现在,我将所需的所有模块加载到索引上.html例如:
<!-- internal js files -->
<script src="app.module.js"></script>
<script src="app.config.js"></script>
<script src="do/something.module.js"></script>
<script src="do/something.component.js"></script>
<script src="do/another_thing.module.js"></script>
<script src="do/another_thing.component.js"></script>
因此,当网站加载时,它还加载所有模块,而无需验证我是否"允许查看它们"。这反过来又使它(恕我直言(存在很大的安全风险,因为攻击者可以看到网站做了什么以及如何在模块中调用私有 API......
如前所述,我在这方面真的没有经验......所以我只是想知道:什么是常见的做法?您将如何/如何解决这个问题?
$injector.loadNewModules
(^v1.6.x( 支持延迟加载 AngularJs (v1.x( 模块。
此示例假定angularjs v1.6.x
&@uirouter/angularjs v1.x.x
为了防止 Angular 模块位于应用程序捆绑包中,它不应是应用程序依赖树的一部分,这意味着 angular 模块admin
不会被导入并用作app
angular 模块的一部分。
// router config
$stateProvider
.state('admin', {
abstract: true,
url: '/admin',
onEnter: /*@ngInject*/ (userService, $stateParams) => {
return userService.getUserFromToken($stateParams.propertyId);
},
lazyLoad: $transition$ => {
// this dynamic import tells webpack to split the admin-panel module (and it dependencies) from the app bundle
return import(/* webpackChunkName: "admin" */ '../admin-panel/admin-panel.module').then(
module => $transition$.injector().loadNewModules([module.AdminPanelModule],
);
},
})
.state('admin.main', { // inherits from admin abstract state
url: '/',
views: {
'@': {
component: 'dashboard',
},
},
});
使用此状态配置,每当应用导航到任何admin
页面(继承自抽象admin
状态(时,onEnter
将检查用户是否具有该页面的权限,然后调用lazyLoad
(仅在第一次(以便将admin.panel.module
加载到应用程序模块。