我有两个问题:
第一个是在创建会话后(定期)更新会话是一种好习惯吗?如果否,那么可能会发生什么问题?
我正在开发基于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)
有人可以在这里帮助我吗?另外,请解释我是否应该更新会话?我有一个将要执行此操作的方案,但这样做似乎并不好。我认为会话一旦创建便不应手动更新。
答案 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