2013-04-07 96 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。你仍然可以为学习目的推出自己的产品,但对于生产你应该坚持使用其中一种测试解决方案。
相关问题