NodeJS在登录后动态加载角度模块

问题描述 投票:0回答:1

首先,我很抱歉,但是我在npm中没有很多经验,所以请原谅我^^

我有一个使用angular的http服务器。现在,我在index.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 ...

就像我说的那样,我真的在这方面没有经验。所以我只是想知道:什么是惯例?您将/如何解决此问题?

javascript node.js angularjs security
1个回答
1
投票

$injector.loadNewModules(^ v1.6.x)支持延迟加载AngularJs(v1.x)模块。

此示例假设$injector.loadNewModulesangularjs v1.6.x

为了防止Angular模块进入应用程序捆绑包,它不应成为应用程序依赖树的一部分,这意味着不会导入Angular模块@uirouter/angularjs v1.x.x并将其用作一部分admin角度模块的位置。

app

使用此状态配置,每当您的应用导航到任何// router config $stateProvider .state('admin', { abstract: true, url: '/admin', data: { requiresLogin: true, }, onEnter: /*@ngInject*/ (userService, $stateParams) => { return userService.getUserFromToken($stateParams.propertyId); }, lazyLoad: $transition$ => { // this dynamic import tells webpack to split the admin-panel module (and it dependecies) from the app bundle return import(/* webpackChunkName: "admin" */ '../admin-panel/admin-panel.module').then( module => $transition$.injector().loadNewModules([module.AdminPanelModule], ); }, }) .state('admin.main', { url: '/', views: { '@': { component: 'dashboard', }, }, }); 页面(继承自抽象admin状态)时,admin都会检查用户是否对该页面具有许可权,然后检查onEnter将被调用(仅在第一次),以将lazyLoad加载到应用模块。

© www.soinside.com 2019 - 2024. All rights reserved.