سلام به همه
میدونم که چند ماهی میشه که از این دوره گذشته ، منم از روال عقب موندم متأسفانه
ولی یه سوال دارم که هر چی سرچ کردم راه حلی براش پیدا نکردم
برای ذخیره session از پکیج express-mysql-session استفاده میکنم اما با هر روتی که صدا زده میشه ، یک session هم ساخته میشه!
اگر کسی به این مشکل برخورده و راه حلی براش پیدا کرده ، ممنون میشم راهنمایی بکنه .
همون اولش گفتم بهت چک بکن ببین با درخواستی که ارسال میشه همراهش session id هست یا نه!!
کلا داخل کوکی چیزی ست نمیشد که بخواد ارسال بکن
تنظیمات cookie رو تغییر دادم درست شد اون true و false رو به صورت string وارد کرده بودی
cookie: {
httpOnly: true,
secure: false,
sameSite: "strict",
maxAge: 1000 * 60 * 60 * 24,
path: "/"
}
چک بکن ببین داخل اون درخواستی که داری ارسال میکنی session id ارسال میشه یا نه! احتمال خیلی زیاد مشکل از همین باشه
// خودِ اپ
const express = require('express');
const application = express();
require('./bootstrap').config(application);
require('./bootstrap/index').setSession(application)
require('./routes').myRouter(application)
module.exports = () => {
let port = process.env.APP_PORT;
application.listen(port, () => {
console.log('application is running on port ' + port + ' ...')
})
}
//فایل بوت
const express = require('express')
const hbs = require('express-handlebars')
const path = require('path')
const bodyParser = require('body-parser');
const sessionConfig = require('./sessionConfig')
const session = require('express-session')
const cookieParser = require('cookie-parser')
exports.config = (application) => {
application.use(bodyParser.json()) // input tags has to have 'name'
application.use(bodyParser.urlencoded({ extended: 'false' })) // we got 'use' so it works like middleware
application.engine('handlebars', hbs())
application.set('view engine', 'handlebars')
application.set('views', path.join(__dirname, '../views'))
application.use(express.static(path.join(__dirname, '../../public')))
// application.use(express.json())
application.use(cookieParser())
};
exports.setSession = (application) => {
application.use(session({ ...sessionConfig }))
}
//کانفیگ session
const session = require('express-session')
const db2 = require('mysql')
const MySQLStore = require('express-mysql-session')(session)
const { v4: uuidv4 } = require('uuid');
module.exports = {
name: "riza.sid",
secret: "19698139",
resave: "false",
saveUninitialized: "false",
cookie: {
httpOnly: "true",
secure: "false",
sameSite: "strict",
maxAge: 1000 * 60 * 60 * 24,
// expires:
path: "/"
},
genid: function (req) {
return uuidv4()
},
store: new MySQLStore({}, db2.createConnection({
host: "localhost",
port: "3306",
user: "root",
password: "1",
database: "newDB"
}))
}
body parser دیگه منسوخ شده و داخل خود اکسپرس دیگه وجود داره و نیازی به استفاده از body parser نیست