passport.js 中的多个模型

Multiple models in passport.js

我的网站上有两种类型的帐户:

管理员和用户。

管理员将访问管理门户并使用凭据和 passport.js 进行身份验证。

用户将访问他的帐户。他可以列出产品...他将无法访问管理门户,只能访问前台。

总而言之,管理员帐户可以添加产品、描述、管理库存,用户将有一个帐户来购买产品(电子商务)。

现在我的问题是身份验证协议相同但我的模型不同。

那么允许 passport.js 验证我的两个帐户的最佳方法是什么?

我需要将模型传递给 passport.js。

我想到的解决方案是:

  1. 有一个用户基础模型并在我的管理和用户模型中继承基础模型。但是我不知道该怎么做。

  2. 将我将使用的模型类型传递给passport.js。但是要怎么做呢?

  3. 为每个模型创建独立的身份验证系统。但这会使代码复杂化以执行完全相同的事情。重复,我讨厌这个。 :)

如果您有其他想法或最佳实践并且可以提供帮助,我将不胜感激。

谢谢,

有什么问题吗?您可以在数据库中为用户存储不同的角色,例如: 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('/');
}