node.js - passport.js 中的多个模型

标签 node.js sails.js passport.js

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

管理员和用户。

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

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

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

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

那么允许 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('/');
}

关于node.js - passport.js 中的多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30016255/

相关文章:

ios - iOS 中的 Sailsjs 套接字

Angular-cli 与 Sailsjs 集成

node.js - 如何使用 Passport.js 访问 Cookie 集

node.js - 如何杀死nodejs中的子进程?

javascript - 有哪些基于 Angularjs 的客户端框架?

node.js - 语法错误 : Unexpected Indentifier while compiling ejs file

javascript - 无法将 React 更新放入 MySQL 数据库

javascript - 更改 sails.js 中的配置文件夹结构

cookies - PassportJS - 如何制作单独的passport.session

node.js - Stormpath Express Passport 保存自定义数据甚至默认数据