Node.js 如何使nodejs中的模块非静态?

Node.js 如何使nodejs中的模块非静态?,node.js,angular,module,Node.js,Angular,Module,我有一个带有节点js和静态角度文件的应用程序。我需要nodejs检查包含授权令牌的请求头。因此,我有一个模块,它检查令牌是否有效,如果是这样,用户可以访问以下所有get方法。 这在app.use(检查令牌的模块)中运行良好 但我还需要用户的电子邮件地址,它写在解码令牌中。必须在Angular应用程序中访问此电子邮件地址。为此,我植入了一个get方法,可以被Angular应用程序调用并发送回电子邮件 我的问题是,如何以安全的方式获取电子邮件地址。目前,我已经编辑了该模块并添加了另一个函数。模块的伪

我有一个带有节点js和静态角度文件的应用程序。我需要nodejs检查包含授权令牌的请求头。因此,我有一个模块,它检查令牌是否有效,如果是这样,用户可以访问以下所有get方法。 这在app.use(检查令牌的模块)中运行良好

但我还需要用户的电子邮件地址,它写在解码令牌中。必须在Angular应用程序中访问此电子邮件地址。为此,我植入了一个get方法,可以被Angular应用程序调用并发送回电子邮件

我的问题是,如何以安全的方式获取电子邮件地址。目前,我已经编辑了该模块并添加了另一个函数。模块的伪代码:

Var email=“”; Module.exports=verfiyToken(请求、rsp、下一个){

  • 获取req参数的标头
  • 检查令牌
  • 如果令牌有效,则设置email=realEmailFromToken
//这个方法不存在,否则index.js的以下get方法永远不会被调用。 如果(next存在),则调用next()

返回时不会出现异常,因为从未发生过错误; }

现在,同一模块中的另一个函数 Module.exports=getEmail(){

}

这对我来说是可行的,但我认为这个模块是一个单例的。如果用户A打了一个成功的电话并且在网站上,我会看到问题。在下一步中,用户B成功呼叫该网站,并拥有已验证的令牌。现在变量“email”有用户B的电子邮件地址。如果用户A现在在Angular中调用一个组件,在该组件中进行电子邮件调用,那么他将获得用户B的电子邮件

你明白我的问题吗?如何让模块为每个会话创建一个实例

对不起,我说的是英语。如果你有任何问题,我会回答

向您的朋友致以最诚挚的问候

听起来你想做这样的事情。考虑<代码>示例模块.js<代码>,导出一个返回函数的函数:

//此处声明的任何内容都是静态的,在所有模块中都可见
const moduleGlobalStatic='此值由所有人共享';
导出=模块。导出=函数(a、b、c){
//这里声明的内容是特定于调用的
让invocationSpecificStatic=`这对每个调用都是唯一的-a:${a},b:${b},c:${c}`;
功能剂量测定法(x,y,z){
//用a,b,c,x,y和z做点什么
}
返回剂量测定法;
}
用法很简单:

const doSomething1=require('sample-module')(1,2,3); 常数doSomething2=require('sample-module')('alpha','bravo','charlie')

doSomething()
已关闭上述不同范围中可见的变量

  • doSomething1
    doSomething2
    共享
    moduleGlobalStatic

  • doSomething2
    doSomething2
    分别为
    a
    b
    c
    以及
    invocationSpecificStatic
    获取各自的值

  • 每次调用
    doSomething1
    doSomething2
    时,它们都会获得自己的
    x
    y
    z
    副本。但是,它们的
    a
    b
    c
    invocationSpecificStatic
    变量在每次调用时都是不变的(除非它们在执行期间修改)

//Email has the right value if the function verifyToken was successful once. That is always the case, because if not, then getEmail can never be called.
Return email;