我想用一些登錄用戶創建一個Django應用程序。另一方面,因爲我想要一些實時功能,所以我想使用Express.js應用程序。在Redis上共享一個Django和Express.js應用程序的會話存儲
現在,問題是,我不希望不可識別的用戶訪問Express.js應用程序的數據。所以我必須在Express.js和Django應用程序之間共享會話存儲。
我認爲使用Redis會是一個好主意,因爲volatile鍵非常適合這種情況,並且我已經將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應用程序。
那麼,這是一個好主意嗎?沒有任何問題嗎?特別是關於密鑰,我不確定他們是否會共享相同的會話。
您絕對需要爲express或django編寫自定義處理程序,同步它們如何編碼cookie,如何將cookie中的會話標識符映射到redis鍵以及如何將redis值映射到會話。 – 2012-02-22 12:50:59
嘿,所以沒有辦法讓它開箱即用?我希望有人對這兩種系統都有同感(也許你有,我不知道:))。 – 2012-02-22 13:04:18
當然,你不必信任我。我從未與django-redis會話合作過。但是我在Express和Django上工作過很多。但是這並不是那裏,因爲Express會話是JSON,而Django會話是Python對象。所以這是行不通的。 Express會將會話存儲爲'sess:sessionId',並不是瘋狂的猜測,django-redis-session使用其他一些方案在redis鍵和會話ID之間進行映射。 – 2012-02-22 13:10:57