Stormpath 多租户快递
Stormpath multi-tenant express
我正在尝试学习如何使用 stormpath 和 express 节点制作多租户应用程序。这是 official document on that topic. As for now i am using express-stormpath 库,用于创建我的登录名和其他内容。但是我找不到如何做多租户。
更新
我让它与护照风暴路径策略一起使用。我不知道这是否是正确的方法,但它有效......现在的问题是我如何在快速版本中更改 accountStore 动态?感觉一个public声明的变量不太好?
var href = {
href: null
}
function hrefUrl(req, res, next){
var host = req.headers.host;
var account = host.split(".")[0];
spClient.getDirectories(function (err, directories) {
directories.each(function (dir, cb){
if(account.toLowerCase() == dir.name.toLowerCase()){
href.href = dir.href
}
cb();
}, function (err){
if(href.href == null){
return res.redirect(301, 'http://dashboard.local.dev/selectCompany');
}
next();
});
});
}
// Authenticate a user.
router.post('/login', hrefUrl, passport.authenticate('stormpath',
{
successRedirect: '/dashboard',
failureRedirect: '/login',
failureFlash: 'Invalid email or password.',
accountStore: href
}
)
);
Express-stormpath 已提供API 供您访问应用程序中的帐户信息。这些帐户属于目录。从官方文档来看,你有两种解决方案来支持多租户。一种是为每个租户创建组,另一种是为每个租户创建目录。
对于您选择的任一解决方案,您都必须使用 express-stormpath 提供的 API 来访问这些与帐户关联的信息。
例如,如果您为每个租户创建了不同的目录,您可能需要在 postLoginHandler
.
中添加与多租户相关的业务逻辑
app.use(stormpath.init(app, {
postLoginHandler: function (account, req, res, next) {
account.getDirectory(function(err, directory) {
console.log(directory)
// if directory is tenant-1
// if directory is tenant-2
})
}
})
我正在尝试学习如何使用 stormpath 和 express 节点制作多租户应用程序。这是 official document on that topic. As for now i am using express-stormpath 库,用于创建我的登录名和其他内容。但是我找不到如何做多租户。
更新 我让它与护照风暴路径策略一起使用。我不知道这是否是正确的方法,但它有效......现在的问题是我如何在快速版本中更改 accountStore 动态?感觉一个public声明的变量不太好?
var href = {
href: null
}
function hrefUrl(req, res, next){
var host = req.headers.host;
var account = host.split(".")[0];
spClient.getDirectories(function (err, directories) {
directories.each(function (dir, cb){
if(account.toLowerCase() == dir.name.toLowerCase()){
href.href = dir.href
}
cb();
}, function (err){
if(href.href == null){
return res.redirect(301, 'http://dashboard.local.dev/selectCompany');
}
next();
});
});
}
// Authenticate a user.
router.post('/login', hrefUrl, passport.authenticate('stormpath',
{
successRedirect: '/dashboard',
failureRedirect: '/login',
failureFlash: 'Invalid email or password.',
accountStore: href
}
)
);
Express-stormpath 已提供API 供您访问应用程序中的帐户信息。这些帐户属于目录。从官方文档来看,你有两种解决方案来支持多租户。一种是为每个租户创建组,另一种是为每个租户创建目录。
对于您选择的任一解决方案,您都必须使用 express-stormpath 提供的 API 来访问这些与帐户关联的信息。
例如,如果您为每个租户创建了不同的目录,您可能需要在 postLoginHandler
.
app.use(stormpath.init(app, {
postLoginHandler: function (account, req, res, next) {
account.getDirectory(function(err, directory) {
console.log(directory)
// if directory is tenant-1
// if directory is tenant-2
})
}
})