Я пытался использовать connect-redis для использования express хранилища сеансов с AWS Elasticache. Сервер Redis на AWS, который я использовал, использует шифрование в пути, шифрование в покое и токен Redis AUTH.
Я использую Passport с локальной стратегией для аутентификации пользователей
Вот как это выглядит в приложении. js, когда я его настраиваю:
const express = require('express'),
app = express(),
session = require('express-session'),
awsHandler = require('./awsHandler'),
passport = require('passport'),
....
....
awsHandler.retrieveServiceCredentials('session').then(keys => {
let secret = keys.session_key;
let redis_auth = keys.redis_auth;
const redis = require('redis');
const redisClient = redis.createClient({
host: 'master.redis-connect.abcd.efg.cache.amazonaws.com',
port: REDIS_PORT,
auth_pass: redis_auth,
tls: { checkServerIdentity: () => undefined }
});
const redisStore = require('connect-redis')(session);
app.use(session({
secret: secret,
resave: false,
saveUninitialized: false,
store: new redisStore({
client: redisClient
})
}));
});
....
....
app.use(passport.initialize());
app.use(passport.session());
Дело в том, что я пытаюсь подключиться к своему веб-сайту, и я не получаю req.session или req.user (когда до использования SQLite с пакет connect-sqlite3, после входа в систему у меня был req.user).
Я заметил, что ничего не сохраняется в redis, когда я подключаюсь к серверу Redis и набираю KEYS *, ключей нет. Однако, когда я пытаюсь установить ключ на сервере Redis, жестко закодированный в приложении. js с помощью:
redisClient.set ('key', 'value')
Это НАСТРОЙКА ключ и значение на сервере (при наборе KEYS * мы можем увидеть его там). Поэтому я успешно установил sh соединение с сервером redis с клиентской библиотекой, однако, там, кажется, что-то происходит, что я не настраиваюсь должным образом, поэтому сеансы сохраняются в Redis.
Я нахожусь на AWS среда (Elasti c Beanstalk, Elasticache).
спасибо за чтение и помощь!
С наилучшими пожеланиями.