Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJ在登录后动态加载角度模块_Javascript_Node.js_Angularjs_Security - Fatal编程技术网

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

Javascript NodeJ在登录后动态加载角度模块,javascript,node.js,angularjs,security,Javascript,Node.js,Angularjs,Security,首先我很抱歉,但是我在npm没有很多经验,所以请原谅我^^ 我有一个使用angular的http服务器。现在,我在index.html上加载所有需要的模块,如下所示: 因此,当网站加载时,它也会加载所有模块,而不验证是否“允许我查看它们”。这反过来使其(imho)成为一个很大的安全风险,因为攻击者可以看到网站的功能以及它如何在模块中调用私有API 如前所述,我在这方面真的没有经验。。所以我只是想知道:常见的做法是什么?如何解决这个问题?延迟加载AngularJs(v1.x)模块受(^v1.6

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

我有一个使用angular的http服务器。现在,我在index.html上加载所有需要的模块,如下所示:


因此,当网站加载时,它也会加载所有模块,而不验证是否“允许我查看它们”。这反过来使其(imho)成为一个很大的安全风险,因为攻击者可以看到网站的功能以及它如何在模块中调用私有API

如前所述,我在这方面真的没有经验。。所以我只是想知道:常见的做法是什么?如何解决这个问题?

延迟加载AngularJs(v1.x)模块受(^v1.6.x)支持

本例假设
angularjs v1.6.x
&
@uirouter/angularjs v1.x.x

为了防止角度模块进入应用程序包,它不应成为应用程序依赖关系树的一部分,这意味着角度模块不会被导入并用作应用程序角度模块的一部分

//路由器配置
$stateProvider
.state('admin'{
摘要:没错,
url:“/admin”,
onEnter://*@ngInject*/(userService$stateParams)=>{
返回userService.getUserFromToken($stateParams.propertyId);
},
懒散负荷:$transition$=>{
//此动态导入告诉webpack将管理面板模块(和it依赖项)从应用程序包中拆分
返回导入(/*webpackChunkName:“admin”*/'../admin panel/admin panel.module')。然后(
module=>$transition$.injector().loadNewModules([module.AdminPanelModule],
);
},
})
.state('admin.main',{//继承自管理抽象状态
url:“/”,
观点:{
'@': {
组件:“仪表板”,
},
},
});
使用此状态配置,每当您的应用程序将导航到任何
admin
页面(从抽象
admin
状态继承而来)时,
oneter
将检查用户是否拥有该页面的权限,然后将调用
lazyLoad
(仅在第一次)为了将
管理面板.module
加载到应用程序模块。

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

本例假设
angularjs v1.6.x
&
@uirouter/angularjs v1.x.x

为了防止角度模块进入应用程序包,它不应成为应用程序依赖关系树的一部分,这意味着角度模块不会被导入并用作应用程序角度模块的一部分

//路由器配置
$stateProvider
.state('admin'{
摘要:没错,
url:“/admin”,
onEnter://*@ngInject*/(userService$stateParams)=>{
返回userService.getUserFromToken($stateParams.propertyId);
},
懒散负荷:$transition$=>{
//此动态导入告诉webpack将管理面板模块(和it依赖项)从应用程序包中拆分
返回导入(/*webpackChunkName:“admin”*/'../admin panel/admin panel.module')。然后(
module=>$transition$.injector().loadNewModules([module.AdminPanelModule],
);
},
})
.state('admin.main',{//继承自管理抽象状态
url:“/”,
观点:{
'@': {
组件:“仪表板”,
},
},
});

使用此状态配置,每当您的应用程序将导航到任何
admin
页面(从抽象
admin
状态继承而来)时,
oneter
将检查用户是否拥有该页面的权限,然后将调用
lazyLoad
(仅在第一次)为了将
admin.panel.module
加载到应用程序模块中。

Angularjs有一个延迟加载模块,但似乎您没有使用bundler…这是真的吗?啊,是的,谢谢您的提示。然而,这只会使它更难阅读,但并不能完全解决问题,对吗?我不确定您的意思是什么,什么不能解决问题?我不知道意思是说,即使我捆绑所有东西,我的所有模块仍然从一开始就被加载,不是吗?这不会改变我的应用程序的行为。正确,但有了webpack作为捆绑器,代码分割一块代码并在路由级别加载要容易得多,我可以用我的方法回答。AngularJS有一个延迟加载模块,但似乎你没有sing bundler…这是真的吗?啊,是的,谢谢你的提示。然而,这只是让它更难阅读,但并不能完全解决问题,对吗?我不确定你的意思是什么,什么不能解决问题?我的意思是,即使我捆绑了所有东西,我的所有模块仍然从一开始就被加载,不是吗?它不会改变我应用程序的行为没错,但使用webpack作为绑定器,将代码分割成一段代码并在路由级别加载要容易得多,我可以用我的方法来回答