我正在使用 webapp2 开发一个 appengine 应用程序。我的认证基于本文提出的想法。
我添加了删除帐户的功能(这是应用程序的要求),但我遇到了会话问题。如果用户从多个位置登录,则该用户将有两个身份验证令牌。从其中一个登录名中删除帐户后,该登录名的会话将被销毁。但是,另一个登录名将在数据存储中具有身份验证令牌。
我更改了user_required
/ check_login
decorator/function 以便它首先在会话中查找用户。如果找不到,我让客户端知道他们需要登录。如果确实找到了,我就从数据存储中获取用户。如果它是无,那么我假设有多个登录,另一个删除了帐户(这也删除了用户)。因此,我终止了会话,并告诉客户端用户不再存在。否则,我会检查用户是否经过验证,如果不是,我会告诉客户必须先验证用户才能执行任何操作。
如果帐户被删除,我宁愿能够终止用户的所有会话。有没有办法做到这一点?我也想要这个功能,这样我就可以拥有一个功能,登录用户可以看到该用户的所有会话,并随意杀死/撤销它们(有点像 Facebook 和谷歌,我相信很多其他服务)提供。
编辑:即使我可能最终会在某个时候从数据存储中获取用户,并且当我称之为self.user
a时,如果可以的话webapp2.cached_property
,我仍然宁愿不必在每个请求的开头获取用户user_required
也许只从会话中提取信息就可以逃脱。