So I made basic app with simple login and registration, using passport-local and express-session.
router.post('/register', (req, res) => {
var newUser = new User({
email: req.body.email,
username: req.body.username
});
User.register(newUser, req.body.password, (err, user) => {
if (err) {
res.status(404).json(err);
} else {
passport.authenticate('local')
(req, res, () => {
res.status(200).json({ "registerSuccess": true });
});
}
});
});
router.post('/login', function (req, res, next) {
passport.authenticate('local', function (err, user, info) {
if (err) {
return next(err);
}
// Redirect if it fails
if (!user) {
return res.status(404).json(info);
}
req.logIn(user, function (err) {
if (err) {
return res.status(200).json(err);
}
// Redirect if it succeeds
res.status(200).json({ "loginSuccess": true });
});
})(req, res, next);
});
Using POSTMAN I get the desired effect. On 2 separate computers, I login with 2 different users, and on '/getUser' route, I get info about currently logged in user.
Now I wanna turn this app into RESTful API (which I believe it already is).
Now I am making frontend in Angular5. When I hit route '/login', I get response that I am successfuly logged in, just like with Postman. But when I change route, I am no longer logged in?
How do I keep the user logged in on frontend? Is this even possible with passport and express-session?