我正在使用带有auth的WebApp2进行用户会话。我的客户端偶尔会向服务器发出几乎同时的请求。第一个将使用如下所示的会话数据发出请求:
{
'cache_ts': 1408106895,
'token': u'GXpsaVQh5ZWtqxJMUBpGTr',
'user_id': 5690665774088192L,
'remember': 1,
'token_ts': 1408034938
}
然后在调用auth.get_user_by_session()之后,会话返回如下:
{
'cache_ts': 1408124980,
'token': u'0IVduczdGR5PkrMqNhBvzW',
'user_id': 5690665774088192L,
'remember': 1,
'token_ts': 1408124980
}
如您所见,令牌已更改,时间戳已更新。
几乎同时发出另一个包含相同初始会话数据的请求。
{
'cache_ts': 1408106895,
'token': u'GXpsaVQh5ZWtqxJMUBpGTr',
'user_id': 5690665774088192L,
'remember': 1,
'token_ts': 1408034938
}
但是,该令牌现在无效,因此会话数据设置为None。这会擦除用户会话,并导致很多问题。我应该使用一些设置来延长UserToken的使用寿命吗?有没有比get_user_by_session()更合适的方法?我想,使用相同会话数据的几乎同时发出的请求不应该引起很大的问题。理想的情况是,如果auth收到无效或过期的令牌,它就会忽略它们,并抛出错误。
更新1
希望它是一个简单的事情,比如将False传递给get_user_by_session()。那当然会立即杀死会议。
更新2
我发现我只需要user_id字段,而且这是免费提供的cookie数据。实施可以减少问题的发生频率。然而问题实际上并没有解决,而且我喜欢熟悉这个图书馆的人的一些意见。
答案 0 :(得分:2)
这是由于token_new_age参数默认为1天所以...每24小时一次,令牌会改变。
这是一项安全措施,因为如果有人破解该会话,那么它只会工作24小时。
参数'token_max_age'也将在消耗时间时删除令牌。