从选项卡注销,不适用于所有其他选项卡

Posted

技术标签:

【中文标题】从选项卡注销,不适用于所有其他选项卡【英文标题】:Logging out from tab, not working for all other tabs 【发布时间】:2022-01-20 04:43:15 【问题描述】:

我已经使用自定义 cookie 身份验证实现了登录功能,并且效果很好。

当我从一个选项卡中注销时,它正在查找,一旦使用 do log out 用户将重定向到注销屏幕。但是当我打开多个标签时,用户仍然可以访问其他标签中的页面。

如果我在其他选项卡中刷新页面,则用户正在注销。

只有手动刷新页面才有效,如何在不刷新页面的情况下注销用户。

如何刷新应用程序状态。

【问题讨论】:

【参考方案1】:

您必须在固定的时间间隔内不断地对服务器进行 Ajax 调用或通过元标记刷新页面。但作为设计,这不是一个好主意。如果您使用自定义 cookie,请关注 here。

【讨论】:

【参考方案2】:

在 Blazor 中,每个选项卡都在不同的 Blazor 会话 ID 上运行。因此,即使您注销,它也不会自动将您从打开的选项卡的其余部分注销。这是预期的行为。他们都使用相同的对象,但会话 ID 不同。因此,其中一个选项卡中发生的任何更改都不会反映在其他选项卡中。在多个选项卡之间进行通信的一种方法是使用本地存储。这是所有浏览器标签共同共享的地方。

在我当前的 Blazor 应用程序中,我做了类似的事情。登录后,我在浏览器的本地存储中添加了一个键值对(例如日期时间戳)。此外,还注册了一个 setInterval(),它跟踪用户的活动。它还检查登录时添加的密钥。从任何选项卡中注销删除密钥。当其他浏览器选项卡找不到该键时,它们会重定向到登录页面。

【讨论】:

以上是关于从选项卡注销,不适用于所有其他选项卡的主要内容,如果未能解决你的问题,请参考以下文章

引导选项卡不适用于 history.back 选项

在 Rmarkdown 中动态创建选项卡不适用于 ggplot,而它适用于 plotly

标题导航栏的下拉列表不适用于页面选项卡

自动检测浏览器选项卡中的注销?

选项卡面板的动态高度调整不适用于信息框

禁止用户使用新的浏览器选项卡注销