我的网站上有两种类型的帐户:
管理员和用户。
管理员将访问管理门户并使用凭据和 passport.js 进行身份验证。
用户将访问他的帐户。他可以列出产品......他将无法访问管理门户,但可以访问前台。
总而言之,管理员帐户可以添加产品、描述、管理库存,用户将拥有一个帐户来购买产品(电子商务)。
现在我的问题是身份验证协议(protocol)相同但我的模型不同。
那么允许 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('/');
}
关于node.js - passport.js 中的多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30016255/