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

时间:2019-01-23 12:21:22

标签: google-app-engine session google-oauth webapp2

我有两个问题:

  1. 第一个是在创建会话后(定期)更新会话是一种好习惯吗?如果否,那么可能会发生什么问题?

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

确切的代码段是:

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

但是,它引发了一个错误:

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

根据lib的文档,它应该可以工作。如此写道:

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)

有人可以在这里帮助我吗?另外,请解释我是否应该更新会话?我有一个将要执行此操作的方案,但这样做似乎并不好。我认为会话一旦创建便不应手动更新。

1 个答案:

答案 0 :(得分:1)

它必须是这样的:

self.auth.set_session_data(updates)

但是这将清除所有已经存在的密钥(例如auth起作用所需的'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