浏览器中的每个选项卡都是一个单独的浏览器会话。浏览器不应允许选项卡 B 看到选项卡 A 的 cookie 或会话信息。如果允许,则选项卡 A 中的恶意代码可能会窃取您的银行帐户信息、密码、访问令牌等,因为您的银行帐户在选项卡 B。
因此,即使您在不同选项卡中使用不同帐户登录后,示例中的第一个选项卡仍显示第一次登录的帐户信息这一事实是预期的行为,如设计的那样,如果相应的 URL标签位于不同的域上。
如果选项卡正在查看相同的 URL 或相同的域,那么刷新第一个选项卡以反映您在第二个选项卡中所做的事情应该是刷新会话状态和重新获取 cookie 的问题。这是网络应用程序代码的责任,而不是浏览器,IMO。
要检查 oauth2 访问令牌是否有效,您有两种选择:
- 将访问令牌视为不透明的 blob,并跟踪获取访问令牌时返回的过期时间。
- 打开访问令牌看看里面有什么。 OAuth2 没有定义访问令牌包含的内容或它的格式。
一些 OAuth2 令牌服务器只是返回一个 GUID 或其他不透明的标识符,不为客户端携带任何附加信息。
但是,许多 OAuth2 令牌服务器将访问令牌实现为 JWT(JSON Web 令牌)。在访问令牌中携带客户端可见数据提供了一种支持客户端应用程序基于声明的细粒度授权机会的方法。 JWT 通常经过签名以确保真实性和保真度。 JWT 可以加密以保护隐私,尽管这种情况相当罕见。
如果 OAuth 令牌服务器以 JWT 格式返回访问令牌,那么您可以对 JWT 进行解码以从内部的 'exp' 声明中提取令牌过期时间。
一些 OAuth2 令牌服务器还提供 API 来验证作为 Web 请求的访问令牌。这基本上是分发不透明访问令牌的系统所必需的。 Google 的 OAuth 实现提供了访问令牌验证功能:https://developers.google.com/accounts/docs/OAuth2UserAgent#validatetoken