新选项卡将打开登录页面,即使已登录另一个选项卡

New tab opens login page even though already logged in another tab

本文关键字:选项 登录 另一个 将打开 新选项      更新时间:2023-09-26

我是Web开发的新手,我正在尝试实现登录功能。我已经成功实现了登录功能。当我打开www.bla.com/login时,我能够登录被重定向到主页的帖子。

问题:如果打开另一个选项卡并键入:www.bla.com/login再次打开登录页面。理想情况下,如果我登录到其中一个选项卡,无论指向登录页面的 url 如何,我都应该被重定向到主页。

PS:我不确定我需要在这里共享什么代码块,因为我不确定是什么导致了这个问题。如果我需要发布我的代码库,请帮助或让我知道。我正在使用JavaScript和主干作为前端。

编辑

我有一个 REST 服务,

当我登录时会受到攻击,REST 服务会给我一个用户特定的令牌。我使用此用户特定的令牌再次调用另一个 Rest 服务来获取更多特定于用户的数据。

所以,基本上我需要检查收到的这个令牌。收到的令牌我已存储在浏览器会话中。但是当我转到另一个选项卡并尝试访问该令牌时,它的 NULL。所以我假设浏览器中的每个选项卡都不共享会话存储。如果是,那么我应该把这个令牌放在哪里,这样如果有人点击登录页面,我应该检查令牌是否已经存在。如果存在,则重定向到主页。请指导。

没有看到你的代码很难说,所以让我做一个有根据的猜测:

很可能您在用户成功登录后没有创建具有某些会话ID的cookie。然后,此cookie将用于发送到服务器的每个请求中,以证明用户确实经过身份验证。

当您打开一个新选项卡并且没有创建cookie/会话时,这个新的应用程序实例不知道用户已经登录的另一个实例。

你可能想看看这个答案

编辑

也许您正在使用sessionStorage而不是cookies。至少当我读到你的应用程序的行为时,我会这么说。

查看会话存储文档

会话存储

属性允许您访问会话存储 对象。sessionStorage 类似于 Window.localStorage,唯一的 不同之处在于,存储在本地存储中的数据没有设置过期, 存储在会话中的数据在页面会话结束时被清除。 只要浏览器处于打开状态并存活,页面会话就会持续 超过页面重新加载和还原。在新选项卡或窗口中打开页面 将导致启动新会话,这与 会话饼干工作。

因此,请确保应用程序将令牌存储在cookieslocalStorage中。而且它正确地从他们那里读取。也许饼干被创建,但从未阅读?