У меня проблемы с отображением файлов cookie запроса в инструментах разработчика Chrome моего домена переднего плана.Если я сделаю запрос на вход в систему, сессия cookie не будет настроена в браузере.Однако, если я сделаю запрос на вход в систему, перезагрузите внутренний домен и вернусь в внешний домен, я увижу cookie.У меня нет опыта работы с NodeJ, и я не знаю, является ли это ожидаемым поведением или я увижу, как cookie устанавливаются в домене переднего плана после того, как я сделаю запрос на вход в систему.
Вызов API интерфейса:
export function loginUser(User) {
return fetch(LOGIN_URL, {
method: 'POST',
headers: {
'content-type': 'application/json',
},
xhrFields: {
withCredentials: true
},
body: JSON.stringify(User)
}).then(res => res.json());
}
сервер приложения app.js:
const express = require('express');
const morgan = require('morgan');
const helmet = require('helmet');
const cors = require('cors');
const passport = require('passport');
const session = require('express-session');
require('dotenv').config();
const middlewares = require('./middlewares');
const api = require('./api');
const app = express();
app.use(morgan('dev'));
app.use(helmet());
app.use(express.json());
app.use(cors());
require('./config/passport')(passport);
app.use(session({
"name": "sessionCookie",
"secret": "some-secret",
"rolling": true,
"saveUninitialized": true,
"resave": false,
cookie : { secure : false, httpOnly: false, maxAge : (4 * 60 * 60 * 1000) }
}));
app.use(passport.initialize());
app.use(passport.session());
passport.js:
const LocalStrategy = require('passport-local').Strategy;
const bcrypt = require('bcryptjs');
const db = require('../db');
// Load User model
const Users = db.get('users');
module.exports = function(passport) {
passport.use(
new LocalStrategy({ usernameField: 'email' }, (email, password, done) => {
// Match user
Users.findOne({
email: email
}).then(user => {
if (!user) {
return done(null, false, { message: 'That email is not registered' });
}
// Match password
bcrypt.compare(password, user.password, (err, isMatch) => {
if (err) throw err;
if (isMatch) {
return done(null, user);
} else {
return done(null, false, { message: 'Password incorrect' });
}
});
});
})
);
passport.serializeUser(function(user, done) {
console.log('serialize u', user);
done(null, user._id);
});
passport.deserializeUser(function(id, done) {
console.log('desss', id);
Users.findOne({_id: id}.then(function(err, user) {
done(err, user);
}));
});
};
вход в систему:
router.post('/login', (req, res, next) => {
passport.authenticate('local', function(err, user, info) {
if (err) { return next(err); }
req.logIn(user, function(err) {
if (err) {return next(err); }
console.log('successful log in', req.user); **<--- successfully logs in user**
console.log('sesion', req.session); **<--- succesfully returns session object**
return res.json(user);
// return res.redirect('/');
});
})(req, res, next);
});
Заранее спасибо.