我想要两种类型的用户登录(用户、客户端)。我到底如何在 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)之后,我明白我几乎做错了所有事情。
创建了两个 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/