Что я могу сказать, так это то, что connect-mongo, кажется, выполняет свою работу должным образом, потому что я могу видеть сессии, хранящиеся в моем mongodb, каждый раз, когда я вхожу в свое приложение.
Логика моего приложенияв том, что успешный вход в систему приводит меня к странице администратора.но если я обновлю браузер, я вернусь на страницу входа в систему, и моя переменная isAuthenticated (заданная в угловом переднем углу) выдает в консоли значение false.
Я предполагаю, что я не могу правильно сохранить сохраненный сеанс?Я покажу вам фрагменты кода логики:
App.js
const express = require('express');
const app = express();
const api = require('./api/v1');
const auth = require('./auth/routes');
const mongoose = require('mongoose');
// logger
// const morgan = require('morgan');
const bodyParser = require('body-parser');
// to allow request from my Angular test client that use another port
const cors = require('cors');
// passport local
const passport = require('passport');
const cookieParser = require('cookie-parser');
const session = require('express-session');
const Strategy = require('passport-local').Strategy;
// to retrieve users from the MongoDB users collection
const User = require('./auth/models/user');
app.use(cookieParser());
//a session needs a secret to create a cookie
const MongoStore = require('connect-mongo')(session);
const connection = mongoose.connection;
app.use(session({
secret: 'my super secret',
resave: true,
saveUninitialized: true,
store: new MongoStore({ mongooseConnection: connection }),
name: 'antlab-cookie'
}));
app.use(passport.initialize());
app.use(passport.session());
// passport will add a user to the session...
passport.serializeUser((user, cb) => {
cb(null, user);
});
//...and retrieve it from session
passport.deserializeUser((user, cb) => {
cb(null, user);
});
маршруты
const express = require('express');
const router = express.Router();
const User = require('../models/user');
const passport = require('passport');
router.post('/register', (req, res) => {
console.log('user from req.body >>>', req.body);
const newUser = new User(req.body);
newUser.save((err, user) => {
if (err) {
return res.status(500).json(err);
}
// we login the user that has just been created
req.logIn(req.body, (err) => {
if(err) {
console.error('err in register | req.logIn()', err);
}
});
res.status(201).json(user);
});
});
router.post('/login', passport.authenticate('local', {
successRedirect: '/auth/success',
failureRedirect: '/auth/failure'
}));
router.get('/success', (req, res) => {
res.status(200).json({ msg: 'logged in', user: req.user });
});
router.get('/failure', (req, res) => {
res.status(401).json({ msg: 'NOT logged in' });
});
router.get('/logout', (req, res) => {
req.logout();
res.status(200).json({msg: 'logged successfull'});
});
И полные файлы, еслинужно?
App.js https://pastebin.com/BT3hpk9L
rout.js https://pastebin.com/TpwxTkJS