Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js passport.js中的多个模型_Node.js_Sails.js_Passport.js - Fatal编程技术网

Node.js passport.js中的多个模型

Node.js passport.js中的多个模型,node.js,sails.js,passport.js,Node.js,Sails.js,Passport.js,我的网站上有两种类型的账户: 管理员和用户 管理员将访问管理门户,并使用凭据和passport.js进行身份验证 用户将访问他的帐户。他可以列出产品。。。他将无法访问管理门户,只能访问前台 因此,总结管理员帐户可以添加产品,说明,管理股票和用户将有一个帐户购买产品的电子商务 现在我的问题是,身份验证协议是相同的,但我的模型不同 那么,允许passport.js对我的两个帐户进行身份验证的最佳方法是什么 我需要将模型传递到passport.js 我正在考虑的解决方案是: 拥有一个用户基础模型,并在

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

管理员和用户

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

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

因此,总结管理员帐户可以添加产品,说明,管理股票和用户将有一个帐户购买产品的电子商务

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

那么,允许passport.js对我的两个帐户进行身份验证的最佳方法是什么

我需要将模型传递到passport.js

我正在考虑的解决方案是:

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

将我将使用的模型类型传递给passport.js。但如何做到这一点呢

为每个型号创建独立的认证系统。但是做完全相同的事情会使代码复杂化。我讨厌这个

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


谢谢,

有什么问题吗?您可以在数据库中为用户存储不同的角色,如: 1-行政 2-主持人 0-用户默认值

授权后,您可以为管理员和用户使用单一路由。在这种情况下,如果您愿意,您可以签入您的路由a权限:

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只是正确的凭证层,它不关心模型。您的处理方式应该是请求传入,passport验证它们是否经过身份验证,您自己的代码验证此经过身份验证的用户是否属于允许调用此路由的类型,然后提供适当的内容。在某个地方,您存储的用户是您的用户数据库中类似的类型,每个用户都可以有一个类型标志,您可以在他们通过passport的身份验证检查后查找。感谢您的回复。但我不明白。在我的passport中,我有:Admin.create{…来创建Admin用户。所以我需要更改模型来创建user.create{…是否有一种方法可以动态执行此操作。您能为您的解决方案提供一个代码示例吗?谢谢!请尝试阅读以下问题并回答:@Mike'Pomax'Kamermans是正确的,passport只是拼图中的身份验证部分,您描述的问题与授权有关。您的管理员和用户之间有什么区别吗模型还是仅仅是权限的问题?与两个不同的模型不同,也许您可以只使用一个具有角色属性的用户模型,并使用类似的方法来确定管理员和用户可以做什么和不能做什么。我遇到的这个策略的问题是条件验证,一种用户类型的验证与另一种类型的不同。所以现在你必须进行奇怪的条件验证,这很痛苦