I wanted two types of users logging in (User, Client). How exactly can I create localStrategies, serialize and deserialize user for both types in my app.js I have two separate schemas, both using the PassportLocalMongoose plugin.
I currently configuraing my passport like below,
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());
The problem lies when I try to register. Registering as a User works, but as a client shows "Unauthorized" error. How can I fix this problem?
After going through the documentation of passport.js (kudos to Jared), I understood that I was doing almost everything wrong.
Created two localStrategies
passport.use('userLocal', new LocalStrategy(User.authenticate()));
passport.use('clientLocal', new LocalStrategy(Client.authenticate()));
and to authenticate,
passport.authenticate('userLocal')(req, res, function () {
res.redirect('/profile');
});
and
passport.authenticate('clientLocal')(req, res, function () {
res.redirect('/client');
});
Used passport module (l=not using the passport-local-mongoose module) for serializeUser and deseriealizeUser.
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(user, done) {
if(user!=null)
done(null,user);
});
The whole user schema (object) is now stored in the request and can be accessed through any of your routes.
Hope it helps out others with a similar issue.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With