экспресс-сессия не работает с multipart / form-data - PullRequest
0 голосов
/ 03 января 2019

Мой вопрос о экспресс-сессии на узле js.

Я использую экспресс-сессию и сеанс mysql следующим образом

import * as express from "express";
import * as bodyParser from "body-parser";
import * as expressSession from 'express-session';
import * as MySQLStore from 'express-mysql-session';

let sessionStoreConfig = {
            host: host,
            user: user,
            password: password,
            database: db,
            clearExpired: true
            checkExpirationInterval: 900000,
            createDatabaseTable: true,
            connectionLimit: 1,
            endConnectionOnClose: true,
            charset: 'utf8mb4_bin',
            schema: {
                tableName: tableName,
                columnNames: {
                    session_id: 'session_id',
                    expires: 'expires',
                    data: 'data'
                }
            }
        },
    }
let sessionConfig = {
    secret: mysecret,
    resave: true,
    saveUninitialized: false,
    name: someName,
    unset: 'destroy',
    store: null,
    cookie: {
        path: '/',
        httpOnly: true,
        secure: false,
        maxAge: 3600000,
        sameSite: false,
    },
}

var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

MySQLStore(expressSession);
let sessionStore = new MySQLStore(sessionStoreConfig);
sessionConfig.store = this.sessionStore;
app.use(expressSession(sessionConfig));

Во время входа в систему я сохраняю данные сеанса следующим образом

req.session.token = {
    access_token: token,
    token_type: type,
    expires_in: expiry,
}
req.session.save((err)=>{
    if(err)
    {
        console.log(err);
    }
})

Все отлично работает, когда тип контента - application / json.

Когда я публикую файл из углового клиента, я не установил тип контента из-за this , а браузер автоматически установил content-type = multipart / form-data вместе с границей.

Экспресс-сеанс не получил данные, когда типом содержимого является multipart / form-data.

Мне нужны эти данные сеанса, чтобы убедиться, что файл исходит от аутентифицированного пользователя, и я должен сохранить ссылку на пользователя в базе данных. Более того, я использую multer для загрузки файлов на узел js.

...