如何在基于 GAE 的应用程序中更新 webapp2_extras 会话

How to update webapp2_extras session in GAE based application

我有两个问题:

  1. 第一个问题是创建会话后(经常)更新它是一种好习惯吗?如果不是,那么可能发生的问题是什么?

  2. 我正在开发基于 GAE 的应用程序,并使用 GAE 提供的 webapp2_extras 身份验证模型进行身份验证。 我正在尝试更新会话属性的值(在创建后),但它似乎不起作用。

确切的代码片段是:

updates = {'fullname': 'sdsdsdsdsd'}
self.auth.set_session_data(session, **updates)

但是,它抛出一个错误:

TypeError: set_cookie() got an unexpected keyword argument 'fullname'

根据库的文档,它应该可以工作。因为,它写道:

def set_session_data(self, data, **session_args):
    """Sets the session data as a list.

    :param data:
        Deserialized session data.
    :param session_args:
        Extra arguments for the session.
    """
    data = self.store.serialize_session(data)
    if data is not None:
        self.session['_user'] = data
        self.session.container.session_args.update(session_args)

有人可以帮我吗?另外,解释一下我是否应该更新会话?我有一个场景,我会这样做,但看起来不太好。我认为会话一旦创建就不应手动更新。

它需要是这样的:

self.auth.set_session_data(updates)

但这会清除所有已经存在的密钥(比如 'user_id',这是授权工作所必需的),所以也许可以这样做:

session_data = self.auth.get_session_data()
session_data['fullname'] = 'sdsdsdsdsd'
self.auth.set_session_data(session_data)

我不知道您要传入的 session 变量是什么,但是 set_session_data() 只设置了 self.session