node.js - Passport-local mongoose node.js 支持多种用户类型

标签 node.js mongodb authentication passport.js passport-local

我想要两种类型的用户登录(用户、客户端)。我到底如何在 app.js 中为这两种类型创建 localStrategies、序列化和反序列化用户 我有两个单独的架构,都使用 PassportLocalMongoose 插件。

我目前配置我的 Passport 如下,

var User = require('./models/User');
var Client= require('./models/Client');
passport.use(new LocalStrategy(User.authenticate(), Client.authenticate()));
passport.serializeUser(User.serializeUser(), Client.serializeUser());
passport.deserializeUser(User.deserializeUser(), Client.deserializeUser());

问题出在我尝试注册时。注册为用户有效,但作为客户端显示“未经授权”错误。 我该如何解决这个问题?

最佳答案

在浏览了 Passport.js 的文档(感谢 Jared)之后,我明白我几乎做错了所有事情。

  1. 创建了两个 localStrategies

    passport.use('userLocal', new LocalStrategy(User.authenticate())); Passport.use('clientLocal', new LocalStrategy(Client.authenticate()));

并进行身份验证,

passport.authenticate('userLocal')(req, res, function () {
    res.redirect('/profile');
  });
and
passport.authenticate('clientLocal')(req, res, function () {
    res.redirect('/client');
  });
  • 使用passport模块(l=不使用passport-local-mongoose模块)来进行serializeUser和deseriealizeUser。

    passport.serializeUser(函数(用户,完成){ 完成(空,用户); });

    passport.deserializeUser(函数(用户,完成){ if(用户!=空) 完成(空,用户); });

  • 整个用户架构(对象)现在存储在请求中,并且可以通过您的任何路由进行访问。

    希望它可以帮助其他遇到类似问题的人。

    关于node.js - Passport-local mongoose node.js 支持多种用户类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48831211/

    相关文章:

    java - 如何使用java驱动查询mongodb

    javascript - 当模式中的验证匹配 false 时,Mongoose 不会抛出错误

    android - 无法在 keytool 中导入证书

    http - WebSphere Liberty 中 SOAP 客户端代理的基本身份验证

    java - Maven 未下载插件

    node.js - 中间件不重定向

    node.js - 如何在 NodeJS/Express 中的页面刷新之间保留 node-dbox token

    mongodb - mongodb 内部匹配字段

    node.js - 从内部工作进程中获取工作人员的 ID

    java - android应用程序中如何处理域认证?