Я использовал сеанс в моем приложении узла, которое сохраняет «название компании» в переменной сеанса, называемой «sess.companyname», когда вызывается API «/ login».Затем я использую эту переменную сеанса в других вызовах API для извлечения данных из БД.
Проблема, с которой я сталкиваюсь, заключается в том, что я открываю другой браузер и пытаюсь повторить тот же процесс для другого пользователя,переменная сеанса перезаписывается новым «названием компании», и когда я возвращаюсь к предыдущему браузеру, все данные теперь имеют это новое «название компании», которое находится в новом браузере.Например: Пользователь 1 входит в систему из Chrome, Пользователь 2 входит в систему из Firefox, когда это происходит, данные пользователя 1 заменяются данными пользователя 2 // Обратите внимание, что оба браузера работают на одном компьютере.
ЭтоМой файл Server.js:
const express = require('express');
const session = require('express-session');
const mongoose = require('mongoose');
const appRoute = require('./BackEnd/erpRoute');
const bodyParser = require('body-parser');
const port = 3000;
const app = express();
mongoose.connect('mongodb://dbkey...', (err) =>{
if(err){
console.log('error');
}
else{
console.log('done');
}
});
app.use((req, res, next) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept"
);
res.setHeader(
"Access-Control-Allow-Methods",
"GET, POST, PATCH, DELETE, OPTIONS"
);
next();
});
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(session({genid:(req) =>{console.log(req.sessionID) },secret: 'erp-
app', saveUninitialized: true, resave: false}));
var sess;
app.use('/erpRoute',appRoute);
app.listen(port,() => {
console.log("server live at : " + port );
});
И это мой маршрутный файл API:
var express = require('express');
var router = express.Router();
const CModel = require('./db');
const TModel = require('./db2');
const async = require('async');
// middleware that is specific to this router
router.use(function timeLog (req, res, next) {
console.log('Time: ', Date.now());
next();
});
//****************/the home page***********************
router.get('/', function (req, res) {
res.send('Visit other routes to start the app!')
});
//**************/route for login validation*************
router.post('/login',(req, res) => {
sess=req.session;
sess.companyname;
const email_id = req.body.email;
const mypassword = req.body.password;
CModel.findOne({$and:[
{"email":email_id},
{"password":mypassword}
]}).select({"company_name":1,"email":1,"password":1})
.then((val,err) => {
if(err){
return res.status(500).send(err);
}
if(!val)
{
return res.status(403).json({
status:"unSuccessful",
});
}
if(val){
sess.companyname = val.company_name;
sess.save();
console.log(sess);
return res.status(200).json({
status:"Successful",
companyName:sess.companyname
});
}
}).catch(err=>{res.status(500).send(err.message)});
});
//************Route to display Existing Customers*************
router.get('/CustomerDisplay',(req, res) => {
const companyName = sess.companyname;
CModel.find({"company_name":companyName},{"Sales_customer":1})
.then((val,err) => {
if(err){
return res.status(500).send(err);
}
if(!val)
{
return res.status(403).json({
status:"Customers Not Found",
});
}
if(val){
return res.status(200).json({
status:"Customers Found Successfully",
companyName:val
});
}
}).catch(err=>{res.status(500).send(err.message)});
});
Я сталкиваюсь с той же проблемой, если я попробую это в том же браузере, открыв новыйокно браузера или новая вкладка.Это потому что сервер