【发布时间】:2020-03-10 23:07:15
【问题描述】:
我有一个带有节点 js 和静态 Angular 文件的应用程序。我需要 nodejs 来检查带有授权令牌的请求标头。因此,我有一个模块,它检查令牌是否有效,如果是这种情况,用户可以访问以下所有获取方法。 这适用于 app.use(检查令牌的模块)。
但我还需要用户的电子邮件地址,它写在解码后的令牌中。这个电子邮件地址必须可以在 Angular 应用程序中访问。为此,我植入了一个 get-method,它可以由 Angular 应用程序调用并发回电子邮件。
我的问题是,如何以安全的方式获取电子邮件地址。现在我已经编辑了模块并添加了另一个功能。模块伪代码:
Var email = “”; Module.exports = verfiyToken(req, rsp, next) {
- 获取req参数的Header
- 检查令牌
- 如果token有效,则设置email = realEmailFromToken
// 这个不存在,否则 index.js 的以下 get-methods 永远不会被调用。 如果 (next 存在),则调用 next()
返回 doesntMatterBecauseIsNeverReached; }
现在同一模块中的其他功能 Module.exports = getEmail(){
//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;
}
这对我有用,但我认为模块是单例。如果用户 A 成功拨打电话并且在网站中,我会看到问题。在下一步中,用户 B 成功调用网站并拥有经过验证的令牌。现在变量“email”具有用户 B 的电子邮件地址。如果用户 A 现在调用 Angular 中的一个组件,在其中进行了电子邮件调用,那么他将获得用户 B 的电子邮件。
你明白我的问题吗?如何让模块为每个会话创建一个实例?
对不起英语。有什么问题我都会回答的。
最好的问候
【问题讨论】: