我想创建一个包含一些登录用户的 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 方面,我会考虑使用Django-redis-session https://github.com/martinrusev/django-redis-sessions app.
那么,这是个好主意吗?不会有什么问题吗?特别是关于密钥,我不确定他们是否会共享相同的会话。
您必须为 Express 或 Django 编写自定义会话存储。默认情况下,Django(以及 django-redis-sessions 中)将会话存储为 pickled Python 对象。 Express 将会话存储为 JSON 字符串。 Express 与 connect-redis 一起将会话存储在 key 下sess:sessionId
在redis中,而Django(对此不太确定)似乎将它们存储在密钥下sessionId
。您也许可以使用 django-redis-sessions 作为基础,并覆盖encode
, decode
, _get_session_key
, _set_session_key
也许还有其他一些。您还必须确保 cookie 以相同的方式存储和加密。
显然,为 Express 创建一个可以 pickle 和 unpickle Python 对象的会话存储将会困难得多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)