Javascript 如何基于登录在Express.js中动态分配数据库路径?
我有一个后端服务,我想将其用作web应用程序的单个入口点,并根据用户登录动态分配数据库路径。 我意识到这不是一个可扩展的解决方案。我打算在几个客户机的测试期间使用它(访问ALPHA数据库),并设置一个演示(访问SAND数据库)。 我编写了以下模块,作为一个简单的测试,以查看登录是否针对演示用户,所有其他登录都将转到其他资源:Javascript 如何基于登录在Express.js中动态分配数据库路径?,javascript,node.js,express,Javascript,Node.js,Express,我有一个后端服务,我想将其用作web应用程序的单个入口点,并根据用户登录动态分配数据库路径。 我意识到这不是一个可扩展的解决方案。我打算在几个客户机的测试期间使用它(访问ALPHA数据库),并设置一个演示(访问SAND数据库)。 我编写了以下模块,作为一个简单的测试,以查看登录是否针对演示用户,所有其他登录都将转到其他资源: config.js var express = require('express'); var app = express();
config.js
var express = require('express');
var app = express();
module.exports.dbPath = function (login){
console.log('login - ', login);
if (login === 'demo@mysite.com'){
return process.env.DB_SAND;
} else {
return process.env.DB_ALPHA;
}
};
我的问题是,如何管理每个唯一的登录,并为该会话分配一个全局可访问的引用,以将每个用户会话一致地指向正确的数据库?
我是不是太复杂了?如果有一种不同的方法是更好的做法,我欢迎从另一个方向提出建议。我会将其用作中间件,并将其附加到每个用户的
req
对象,类似于:
module.exports = {
dbPath: function(req, res, next){
var login = req.body.login;
console.log('login - ', login);
if (login === 'demo@mysite.com'){
req.dbPath = 'DB_SAND';
} else {
req.dbPath = 'DB_ALPHA';
}
next();
}
};
这对于登录来说似乎是合理的,但是后续调用的方法是什么?在这个模块中创建一个私有对象,为每个登录都保存一个k:v对,密钥是会话令牌,值是DB路径,这样安全吗?我想确保我不会无意中创建安全漏洞。我看不出
req
对象上的k:v对是如何构成安全漏洞的。(不要在res
对象上执行此操作)。