将令牌存储在浏览器 sessionStorage 中是一种好习惯吗?

Is it a good practice to store token in browser sessionStorage?

哪个浏览器提供的客户端存储选项更好?

访问令牌在本地存储中的存储取决于您的应用程序的可见性。它是 public 面向 Web 应用程序还是内部组织 Web 应用程序?

如果 public 面向 Web 应用程序,则访问令牌至少应具有较短的有效期。这是为了尽量减少共享同一台计算机的其他用户访问活动会话的可能性。

或者,您可以使用 sessionStorage(参见 https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage

它会一直存储值,直到浏览器 window 或浏览器选项卡关闭。这比使用 localStorage 稍微好一些(参见 https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

除了使用浏览器本地存储或会话存储外,您还可以实施自己的后端会话管理服务或使用基于云的会话存储提供商(例如 Auth0 或 Okta)来为您处理存储。这样您就不必担心浏览器存储的令牌的会话劫持。建议用于高使用率、高可见性 public 面向 Web 的应用程序。

当您通过身份验证从您的身份服务器获取访问令牌时,可以读取用户详细信息。然后您将不必执行额外的请求来获取其他用户详细信息。