Google app engine 如何获得会话';webapp2和数据存储的密钥?

Google app engine 如何获得会话';webapp2和数据存储的密钥?,google-app-engine,webapp2,google-app-engine-python,Google App Engine,Webapp2,Google App Engine Python,我正在尝试在登录页面上实现“记住我”功能 这就是我想到的逻辑:将会话存储在数据存储中, 将会话id/密钥传递给客户端,以便用户下次访问 该站点,我从数据存储中获取信息,并使用客户端拥有的密钥 我正要做这样的事情: class Session(ndb.Model): username = ndb.StringProperty() email = ndb.StringProperty() if request.get('rememberme'): session = Ses

我正在尝试在登录页面上实现“记住我”功能

这就是我想到的逻辑:将会话存储在数据存储中, 将会话id/密钥传递给客户端,以便用户下次访问 该站点,我从数据存储中获取信息,并使用客户端拥有的密钥

我正要做这样的事情:

class Session(ndb.Model):
    username = ndb.StringProperty()
    email = ndb.StringProperty()

if request.get('rememberme'):
    session = Session()
    session.email = 'john@doe.com'
    session.username = 'jon snow'
    key = session.put()
    # send `key` back to client and store in a cookie, so
    # when client visits the site again, get the session
    # values from the datastore 
    self.response.write(key.id())
但我正在使用中的这段代码来处理我的会话:

class BaseHandler(webapp2.RequestHandler):

  def dispatch(self):
    self.session_store = sessions.get_store(request=self.request)
    try:
      webapp2.RequestHandler.dispatch(self)
    finally:
      self.session_store.save_sessions(self.response)

  @webapp2.cached_property
  def session(self):
    return self.session_store.get_session(name='foo', backend='datastore')
这也会将数据插入“会话”类型下的数据存储中。 因此,如果我也在数据存储中手动存储会话,感觉就像是在做冗余工作


当使用带有数据存储的webapp2会话作为后端时,我如何知道该会话的id/密钥?

为什么需要知道密钥?您可以使用
self.session['which']
直接在处理程序中获取数据,以便在用户下次访问应用程序时从数据存储中检索数据。在执行
会话['whatever']
之前,我需要从数据存储中获取它,最好是使用存储在客户端Cookie中的密钥。为什么需要知道密钥?您可以使用
self.session['which']
直接在处理程序中获取数据,以便在用户下次访问应用程序时从数据存储中检索数据。在执行
会话['whatever']
之前,我需要从数据存储中获取它,最好是使用存储在客户端cookie中的密钥