我想要两种类型的用户登录(用户、客户端)。我到底如何在 app.js 中为这两种类型创建 localStrategies、序列化和反序列化用户
我有两个单独的模式,都使用 PassportLocalMongoose 插件。
我目前配置我的护照如下,
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 模块)进行序列化用户和反序列化用户。
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(user, done) {
if(user!=null)
done(null,user);
});
整个用户架构(对象)现在存储在请求中,并且可以通过任何路由进行访问。
希望它可以帮助其他遇到类似问题的人。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)