Мой вопрос о экспресс-сессии на узле 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.