passport.js 中的多个模型
Multiple models in passport.js
我的网站上有两种类型的帐户:
管理员和用户。
管理员将访问管理门户并使用凭据和 passport.js 进行身份验证。
用户将访问他的帐户。他可以列出产品...他将无法访问管理门户,只能访问前台。
总而言之,管理员帐户可以添加产品、描述、管理库存,用户将有一个帐户来购买产品(电子商务)。
现在我的问题是身份验证协议相同但我的模型不同。
那么允许 passport.js 验证我的两个帐户的最佳方法是什么?
我需要将模型传递给 passport.js。
我想到的解决方案是:
有一个用户基础模型并在我的管理和用户模型中继承基础模型。但是我不知道该怎么做。
将我将使用的模型类型传递给passport.js。但是要怎么做呢?
为每个模型创建独立的身份验证系统。但这会使代码复杂化以执行完全相同的事情。重复,我讨厌这个。 :)
如果您有其他想法或最佳实践并且可以提供帮助,我将不胜感激。
谢谢,
有什么问题吗?您可以在数据库中为用户存储不同的角色,例如:
1 - 管理员
2 - 主持人
0 - 用户(默认)
并且在授权之后(在这种情况下,如果需要,您可以为管理员和用户使用单一路由)您可以检查您的路由权限:
app.get('/admin/dashboard', isAdmin, function(req, res, next) {
// you will get inside only if user is authentificated and has role of admin
// otherwise he will be redirected to the mainpage '/'
res.send('Hi, admin');
});
function isAdmin(req, res, next) {
// if user is authenticated in the session, carry on
if (req.isAuthenticated()) {
// if user is admin, go next
if (req.user.role == 1) {
return next();
}
}
res.redirect('/');
}
我的网站上有两种类型的帐户:
管理员和用户。
管理员将访问管理门户并使用凭据和 passport.js 进行身份验证。
用户将访问他的帐户。他可以列出产品...他将无法访问管理门户,只能访问前台。
总而言之,管理员帐户可以添加产品、描述、管理库存,用户将有一个帐户来购买产品(电子商务)。
现在我的问题是身份验证协议相同但我的模型不同。
那么允许 passport.js 验证我的两个帐户的最佳方法是什么?
我需要将模型传递给 passport.js。
我想到的解决方案是:
有一个用户基础模型并在我的管理和用户模型中继承基础模型。但是我不知道该怎么做。
将我将使用的模型类型传递给passport.js。但是要怎么做呢?
为每个模型创建独立的身份验证系统。但这会使代码复杂化以执行完全相同的事情。重复,我讨厌这个。 :)
如果您有其他想法或最佳实践并且可以提供帮助,我将不胜感激。
谢谢,
有什么问题吗?您可以在数据库中为用户存储不同的角色,例如: 1 - 管理员 2 - 主持人 0 - 用户(默认)
并且在授权之后(在这种情况下,如果需要,您可以为管理员和用户使用单一路由)您可以检查您的路由权限:
app.get('/admin/dashboard', isAdmin, function(req, res, next) {
// you will get inside only if user is authentificated and has role of admin
// otherwise he will be redirected to the mainpage '/'
res.send('Hi, admin');
});
function isAdmin(req, res, next) {
// if user is authenticated in the session, carry on
if (req.isAuthenticated()) {
// if user is admin, go next
if (req.user.role == 1) {
return next();
}
}
res.redirect('/');
}