0

我正在评估在 Angular 9 应用程序中使用 angular-oauth2-oidc 包。我一直在玩在这里找到的工作示例。

当我运行工作示例并打开两个单独的浏览器会话(Chrome)并尝试使用提供的两个用户名/密码登录时,我注意到以下内容:

  1. 当我在一个浏览器中注销时,另一个浏览器会注销。
  2. 当我登录一个浏览器并尝试登录第二个浏览器(使用不同的用户帐户)时,它会自动让我登录,而无需进行身份验证
  3. 当我注销时,我注意到 sessionStorage 已被删除,但是当我单击登录时我仍然自动登录。

这是预期的功能吗?看起来很奇怪的行为。谁能推荐我如何配置 angular-oauth2-oidc 来克服这个突出的问题?

4

1 回答 1

0

在您的情况下,我看到登录状态和信息保存在会话存储中。即使您从多个选项卡打开它,同一网站的会话存储也是相同的。

因此,当您从一个选项卡注销时,登录状态会在共享会话存储中更改。并且登录信息被删除。因此,所有打开的水龙头都会从会话存储中读取用户已注销。

因此,对于每个网站只有一个会话存储的单个浏览器是正常的,您只能使用该网站的一个用户登录。

如果您想使用不同的用户登录,请使用不同的浏览器。

如果让用户多次点击以不同用户登录很重要,您必须:

  • 不要让 angular-oauth2-oidc 包使用 sessionStorage、localStorage,而是使用自定义存储,这是一种在运行时仅存在于代码中的服务。但是当刷新时一切都会丢失,您将需要再次登录。
  • 不要让身份服务器上的登录页面在 cookie 中存储任何内容。所以你应该删除记住我。因为有多个用户登录并且你不知道谁的会话结束来刷新他的会话所以他必须再次输入他的凭据
于 2020-06-06T18:35:53.220 回答