Совместное использование хранилища сеансов в Redis для Django и приложения Express.js

Я хочу создать приложение Django с некоторыми зарегистрированными пользователями. С другой стороны, поскольку мне нужны некоторые возможности в реальном времени, я хочу использовать приложение Express.js.

Теперь проблема заключается в том, что я не хочу, чтобы пользователи, не имеющие авторизации, получили доступ к приложениям приложения Express.js. Поэтому мне нужно разделить хранилище сеансов между приложениями Express.js и Django.

Я думал, что использование Redis будет хорошей идеей, так как волатильные клавиши идеально подходят для этой подгонки, и я уже использую Redis для другой части приложения.

В приложении Express.js у меня будет такой код:

[...] this.sessionStore = new RedisStore; this.use(express.session({ // Private crypting key secret: 'keyboard cat', // I'm worried about this for session sharing store: this.sessionStore, cookie: { maxAge: 1800000 } })) [...] 

На стороне Django я бы подумал об использовании приложения djangoredis-session .

Итак, это хорошая идея? Не будет проблем? В частности, о секретном ключе, я не уверен, что они будут участвовать в одних и тех же сеансах.

Вам нужно будет написать собственное хранилище сеансов для Express или Django. Django по умолчанию (а также в django-redis-session) хранит сеансы как маринованные объекты Python. Express хранит сеансы как строки JSON. Express, с подключением-redis, хранит сеансы под ключом sess:sessionId в redis, в то время как Django (не совсем уверен в этом), похоже, сохраняет их под ключ sessionId . Возможно, вы сможете использовать django-redis-sessions в качестве базы и переопределить encode , decode , _get_session_key , _set_session_key и, возможно, несколько других. Вы также должны убедиться, что файлы cookie хранятся и шифруются одинаково.

Очевидно, будет сложнее создать хранилище сеансов для Express, которое может мариновать и распаковывать объекты Python.