【问题标题】:Angular 9 authentication with angular-oauth2-oidc使用 angular-oauth2-oidc 进行 Angular 9 身份验证
【发布时间】:2020-09-25 21:12:04
【问题描述】:

我正在评估在 Angular 9 应用程序中使用 angular-oauth2-oidc 包。我一直在玩工作示例found here

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

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

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

【问题讨论】:

  • 浏览器会话是什么意思?我很确定这与图书馆无关。很可能您的“会话”实际上是共享的。尝试 chrome 和 edge/safari/chrome-incognito 以确保。另一个选项是您使用的后端 (idp)。可能您的测试实例一次支持唯一的用户会话(听起来很愚蠢,但这就是您的解释)

标签: angular angular-oauth2-oidc


【解决方案1】:

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

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

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

如果你想用不同的用户登录使用不同的浏览器。

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

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

【讨论】:

  • 您好,感谢您对我的问题发表评论。我遇到的这个问题是使用两个单独的浏览器会话而不是使用两个选项卡的单个浏览器。
猜你喜欢
  • 2020-03-03
  • 2021-02-17
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-22
  • 1970-01-01
相关资源
最近更新 更多