2013-04-07 130 views
1

我甚至不明白的用戶會話信息是如何通過普通的HTTP堅持/ S GET電話,我指的是細節,比如在服務器/客戶端交流一行的代碼和數據線。我基本上知道它是服務器上的一個會話對象,它包含你所需要的,以及一個包含在'cookie'WTHTI中的對象的id。這變得不透明(到Javascript)與服務器來回傳遞。該死的不可沾的餅乾。Google App Engine:實現會話API/ajax請求的常用方法?

我想在python/AppEngine中實現會話CRUD數據庫端點。什麼是做會話持久性的最佳方式? (沒有框架,插件或現成的解決方案,我想了解)。我甚至不知道這些是如何在任何應用程序中實際完成的,但它很常見。

我想是這樣的令牌發送一個帶有每個API調用,而不是凌亂,只是有一個令牌在使用Javascript/DOM躺在附近的客戶端?

怎麼樣餅乾,地獄怎麼做餅乾甚至工作?這對我來說是一個盲點,而且非常重要。我不知道爲什麼它不透明並且易於實施。

如果我們所做的是傳遞一個id前進和後退到IDENT用戶,並調用用戶的會話對象,什麼是點心和(非食用)令牌有何區別?

它是完全有可能只是做用戶驗證,過渡到一個會話,只使用令牌,或者必須在一個使用Cookie?

我實現自己的自定義AUTHENT(上webapp2_extras的後面),並且這將是對安全的網址,並與所有常見的saltyhashed密碼注意事項。但是,我所有的AJAX機器中的'token'和'cookie'會話部分仍然讓我頭腦發熱。

回答

3

餅乾:

  1. Cookie是由瀏覽器內部進行處理,而不是由JavaScript或DOM。
  2. 餅乾非常簡單:僅在HTTP標頭中以字符串的形式發送名稱:值對
  3. 操作原理非常簡單:服務器向瀏覽器發送cookie,然後瀏覽器向該服務器發送每個請求的cookie(此取決於Cookie類型和它的屬性)
  4. Cookie有幾種類型,但會話cookie是會話綁定的:瀏覽器將它們保存在內存中併發送給用戶,直到用戶關閉瀏覽器應用程序。

瞭解更多關於在這裏:​​http://en.wikipedia.org/wiki/HTTP_cookie

會話是一系列來自同一用戶發出的HTTP請求。它們通常使用cookie(還有其他技術)構建,所以會話依賴於cookie(但cookie不依賴於會話)。

服務器會話綁定到特定的cookie內部持久存儲,例如GAE生產使用的cookie名稱ACSID跟蹤它的會話。所以當服務器沒有獲得會話cookie時,它假設這是一個新的會話並創建一個新的會話cookie並將其發送給客戶端並創建與該會話關聯的對象存儲。之後,無論何時服務器獲得會話cookie,它都會加載綁定到該cookie的對象存儲。

注意:Cookie和會話不是身份驗證:他們可以告訴您一系列請求來自同一用戶,但他們不會告訴您這是哪個用戶。這是身份驗證的工作,您可以推出自己的(基於用戶名 - 密碼或類似的)或者您可以使用其中一種可用的身份驗證協議(OpenID,OAuth)。

Qs的:

  • 是的,你可以將自己的會話使用「非食用」標記,跟蹤前提是你控制服務器和客戶端。 OTOH瀏覽器是基於標準的,他們使用開箱即用的cookie來提供會話(但您仍然可以在JS中推出自己的)。
  • 執行會話持久性的最佳方法:使用existing session library for python。你仍然可以爲學習目的推出自己的產品,但對於生產你應該堅持使用其中一種測試解決方案。
相關問題