2013-11-24 114 views
0

我有兩個web應用程序不同的東西,但身份驗證只能通過一個(使用python和龍捲風),id喜歡讓第二個應用程序透明地訪問用戶的憑證,目前我可以通過頭部讀取已登錄用戶的cookie:Access-Control-Allow-Credentials,那麼我將如何訪問cookie,以便我可以將其保存(mongodb/redis/anywhere-but-mysql),並在第二個應用中檢索它? 我已經試過:tornadoweb:在數據庫中存儲cookie並檢索它們

self.set_secure_cookie('cookie_name') # works i can see the cookie in subsequent request headers 
self.get_secure_cookie("cookie_name") # just after setting the cookie returns None 

我在想什麼是存儲加密值,並在需要時在第二應用程序後進行比較和,這是明智的?所有我需要做的就是確保用戶登錄到 ,並且它們現在存在於用戶列表中。

回答

2

所以你已經成功地設置了一個服務器的cookie,然後在第二個檢索它?如果是這樣,太棒了!這是最棘手的部分(imho)。

現在有兩種方法可以去。

  1. 在cookie
    龍捲風存儲的數據有,因爲你已經注意到了,出於安全cookie支持。這基本上意味着您可以將數據存儲在Cookie中並用祕密簽名。如果兩臺服務器都具有相同的密碼,則可以驗證cookie數據未被更改,並且您已在兩臺服務器之間成功分發數據。如果您需要在會話中存儲大量數據,則這種分散式替代方案不適用。

  2. 共享數據庫(或其他服務器可以使用的API)
    如果使用此解決方案,您只需將cookie存儲在cookie中。不需要使用安全cookie,因爲它沒有存儲數據。您只需生成一個SSID,例如ssid = uuid.uuid4().hex,將其存儲在名爲類似ssid的cookie中,並將記錄與要存儲的所有會話數據一起添加到數據庫。我真的很喜歡Redis,因爲你可以在創建時設置過期時間,不必擔心這個問題,速度非常快,最好的事情是有一個很好用的,易於使用的異步庫,可以和龍捲風一起使用。

相關問題