可以说我们有一个模块化的angularjs应用程序,看起来像这样:
public boolean function onRequestStart (
required string targetPage) {
try {
if (checkForAttack()) {
location url="/" addtoken=false;
return true;
}
... do other stuff ...
} catch (any e) {
onError(e, "onRequestStart");
}
return true;
} // onRequestStart()
private boolean function checkForAttack() {
// check for any kind of sql injection or xss attack
var attackFound = false;
// you could change these tests, or add more tests
var tests = ["4445434C415245", "cast(\s|%20)*(%28|\()", "(;|%3B)(\s|%20)*DECLARE", /*"exec(\s|%20)*\(",*/ "schema\.columns|table_name|column_name|drop(\s|%20)+table|insert(\s|%20)+into|\.tables", "\.\[sysobjects\]", "\.sysobjects"];
var ctTests = ArrayLen(tests);
var ix = 0;
var key = "";
if (isDefined("CGI.query_string") && CGI.query_string != "") {
for (ix = 1; ix <= ctTests; ix++) {
if (REFindNocase(tests[ix], CGI.query_string) > 0) {
CGI.query_string = "";
attackFound = true;
break;
}
}
}
if (isDefined("URL")) {
for (key in URL) {
for (ix = 1; ix <= ctTests; ix++) {
if (REFindNocase(tests[ix], URL[key]) > 0) {
attackFound = true;
URL[key] = "";
}
}
}
}
if (isDefined("Form")) {
for (key in Form) {
for (ix = 1; ix <= ctTests; ix++) {
if (reFindNocase(tests[ix], Form[key]) > 0) {
attackFound = true;
Form[key] = "";
}
}
}
}
if (IsDefined("Cookie")) {
for (key in Cookie) {
for (ix = 1; ix <= ctTests; ix++) {
if (REFindNocase(tests[ix], Cookie[key]) > 0) {
attackFound = true;
Cookie[key] = "";
}
}
}
}
return attackFound;
} // checkForAttack()
在索引模板中,我们以通常的方式初始化应用程序
let mod = angular.module('portal', [
'ui.router',
'portal.module1',
'portal.module2',
'portal.module3',
'portal.module4'
])
这是我们“核心”功能的一种,我希望保持不变。在为新客户创建新功能时,每个人都希望有所不同,因此我们尝试为每个客户编写新的单独模块,并保持核心功能不变。但是,新模块确实依赖核心功能中的服务和指令。每个新功能都为后端路由提供了一些微服务,然后为UI提供了新的angularjs代码。
如果我创建一个新模块,例如<body ng-app="portal">
,如何在不触碰上面定义的情况下将该模块放入主要的crazy_feature
角度应用程序中?我们也使用webpack捆绑所有东西。