تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۴ hamidreza shahhosseini
پیکربندی session
مجتبی سوری حل شده توسط مجتبی سوری

سلام به همه

میدونم که چند ماهی میشه که از این دوره گذشته ، منم از روال عقب موندم متأسفانه

ولی یه سوال دارم که هر چی سرچ کردم راه حلی براش پیدا نکردم

برای ذخیره session از پکیج express-mysql-session استفاده میکنم اما با هر روتی که صدا زده میشه ، یک session هم ساخته میشه!

اگر کسی به این مشکل برخورده و راه حلی براش پیدا کرده ، ممنون میشم راهنمایی بکنه .

چک بکن ببین داخل اون درخواستی که داری ارسال میکنی  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"
    }))
}

 

hamidreza shahhosseini ۱۹ مهر ۱۳۹۹، ۱۰:۰۷

همون اولش گفتم بهت چک بکن ببین با درخواستی که ارسال میشه همراهش session id هست یا نه!!
کلا داخل کوکی چیزی ست نمیشد که بخواد ارسال بکن

تنظیمات cookie رو تغییر دادم درست شد اون true و false رو به صورت string وارد کرده بودی

cookie: {
        httpOnly: true,
        secure: false,
        sameSite: "strict",
        maxAge: 1000 * 60 * 60 * 24,
        path: "/"
    }

 

بهترین پاسخ
مجتبی سوری ۲۹ مهر ۱۳۹۹، ۱۵:۴۶

body parser  دیگه منسوخ شده و داخل خود اکسپرس دیگه وجود داره و نیازی به استفاده از body parser  نیست

somia molaei ۱۵ مهر ۱۴۰۰، ۱۲:۵۰