Идентификатор сессии в express.js
Доброй ночи! Пытаюсь выстроить авторизацию в сервисе на nodejs (express + express-session) express-session использует хранилище redis..
Данные хранятся как sess:req.sessionID => JSON
Хочется, чтоб req.sessionID был равен ID пользователя, если он авторизирован) Но при авторизации указать ID уже не получается, так как сессия уже якобы есть.
Это избавило бы меня от дубликатов в redis и искать удобней..
Вопрос - как правильно создать сессию и хранить ее в хранилище
session.js
import 'dotenv/config'
import session from 'express-session'
import { createClient } from 'redis'
import connectRedis from 'connect-redis'
import { v4 as uuidv4 } from 'uuid'
const redisClient = createClient({host: process.env.REDIS_HOST, port: process.env.REDIS_PORT, legacyMode: true})
const RedisStore = connectRedis(session)
try {
await redisClient.connect()
} catch (error) {
console.log('REDIS', error)
}
const maxAge = 60 * 60 * 1000 * 24
const connect = session({
store: new RedisStore({ client: redisClient }),
secret: process.env.SESSION_SECRET,
name: 'sid',
resave: false,
saveUninitialized: false,
cookie: {
secure: true,
httpOnly: false,
sameSite: 'none',
maxAge: maxAge
},
genid: () => {
return uuidv4() // тут ID сессии = ключ в редис
}
})
export default {
connect,
}
Сам сервер упрощенно
import 'dotenv/config'
import https from 'https'
import fs from 'fs'
import express from 'express'
import session from './app/session'
import roures from './routes'
const app = express()
app.use(session.connect)
app.use('/', roures)
https.createServer({
key: fs.readFileSync('../key.pem'),
cert: fs.readFileSync('../cert.pem')
}, app).listen(process.env.SERVER_PORT, () => {
console.log('HTTPS API Server started successfully on port', process.env.SERVER_PORT)
})