🔥 با کمک هوش مصنوعی در کمتر از 6 ماه فول‌استک شوید ...
۰ ثانیه
۰ دقیقه
۰ ساعت
۴ خانم فتّانه دانایی‌فرد
پیکربندی 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"
    }))
}

 

خانم فتّانه دانایی‌فرد ۱۹ مهر ۱۳۹۹، ۱۰:۰۷

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

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

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

 

بهترین پاسخ
استاد میلا شریف ۲۹ مهر ۱۳۹۹، ۱۵:۴۶

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

آقای آریانا انوشه ۱۵ مهر ۱۴۰۰، ۱۲:۵۰