从选项卡注销,不适用于所有其他选项卡
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(),它跟踪用户的活动。它还检查登录时添加的密钥。从任何选项卡中注销删除密钥。当其他浏览器选项卡找不到该键时,它们会重定向到登录页面。
【讨论】:
以上是关于从选项卡注销,不适用于所有其他选项卡的主要内容,如果未能解决你的问题,请参考以下文章