Я занимаюсь разработкой веб-сайта с использованием стека MERN. После входа в систему пользователь успешно создает сеанс пользователя на mongoDB. Когда я пытаюсь проверить пользовательский сеанс с помощью ax ios .get () с userCredentials: true, сервер не получает сеансовый повар ie (я попытался распечатать req.session.user на стороне сервера и выдает вывод как 'undefined')
Метод аутентификации на клиенте
export const isAuth = () => (dispatch) => {
axios.defaults.withCredentials = true;
axios
.get("http://localhost:5000/users/authchecker", {withCredentials:true})
.then((res) =>
dispatch({
type: AUTH_SUCCESS,
payload: res.data
})
)
.catch((err) => {
dispatch({
type: AUTH_FAIL
});
});
}
Метод аутентификации на сервере
exports.authChecker = (req, res) => {
const sessUser = req.session.user;
console.log(sessUser); //when I print the req, it says undefined
if (sessUser) {
return res.json(sessUser);
} else {
return res.status(401).json({ msg: "Unauthorized" });
}
};
Я использую express сеансов для создания сеанса. Вот приложение. js на стороне сервера
const express = require('express');
const expressLayouts = require('express-ejs-layouts');
const mongoose = require('mongoose');
const passport = require('passport');
const flash = require('connect-flash');
const session = require('express-session');
const cors = require('cors');
const morgan = require("morgan");
const helmet = require('helmet');
const MongoDBStore = require('connect-mongodb-session')(session);
const app = express();
const router = express.Router();
const { HOST, SESS_SECRET, NODE_ENV, IS_PROD, COOKIE_NAME } = require('./config/config');
const MAX_AGE = 1000 * 60 * 2;
//other things
app.use(session({
name: 'session',
secret: 'secret',
resave: true,
saveUninitialized: false,
store : mongoDBStore,
cookie :{
maxAge : MAX_AGE,
sameSite: false,
secure : IS_PROD
}
}));
//the other things
Я новичок ie в MERN, и я реализовал эти вещи, ссылаясь на онлайн-блог. Я застрял здесь почти 4 дня и теперь я беспомощен. Огромное спасибо за помощь и внимание к этому!