【发布时间】:2014-08-18 12:34:26
【问题描述】:
我正在使用带有身份验证的 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
}
但是,该令牌现在无效,因此会话数据设置为无。这会擦除用户会话,并导致很多问题。我应该使用一些设置来延长 UserToken 的寿命吗?有比 get_user_by_session() 更合适的方法吗?我想几乎同时请求具有相同会话数据的请求不应该引起巨大的问题。理想的情况是,如果 auth 收到无效或过期的令牌,它会忽略它们并抛出错误。
更新 1
希望这是简单的事情,比如将 False 传递给 get_user_by_session()。这当然会立即终止会话。
更新 2
我发现我真的只需要 user_id 字段,而且它是随 cookie 数据免费提供的。实施可以减少问题的频率。然而,这个问题实际上并没有得到解决,我希望任何熟悉这个库的人都能提供一些意见。
【问题讨论】: