Jquery 从localhost中的第二个窗口登录时,LocalStorage中的数据将被覆盖

Jquery 从localhost中的第二个窗口登录时,LocalStorage中的数据将被覆盖,jquery,redirect,local-storage,Jquery,Redirect,Local Storage,当使用submitindex.html时,我执行以下ajax操作,我需要将用户数据保存到localStorage,因为我重定向到另一个路由,它不会有数据,除非。这一切都很好,但当我在新的localhost窗口中打开页面并再次登录时,localStorage中的旧数据将被覆盖 为什么会这样 // Login index.js $('#frm-login').submit(function (e) { event.preventDefault() $('button').text(

当使用submitindex.html时,我执行以下ajax操作,我需要将用户数据保存到localStorage,因为我重定向到另一个路由,它不会有数据,除非。这一切都很好,但当我在新的localhost窗口中打开页面并再次登录时,localStorage中的旧数据将被覆盖

为什么会这样

// Login index.js 
$('#frm-login').submit(function (e) {
    event.preventDefault()
    $('button').text('Please wait ...').prop('disabled')
    $.ajax({
        url: "/login-user",
        type: "POST",
        data: $('#frm-login').serialize(),
        dataType: "json"
    }).always(function (response) {
        $('button').text('Logging in').prop('disabled')
        console.log("Login", response)
        if (response.status == "error") {
            $('button').removeClass('lime').addClass('red').text('Log in failed. Try again.');
            return
        }
        if (response.token) {
            localStorage.setItem('token', response.token);
            console.log(localStorage.token)
            if (localStorage.token) {
                $.ajax({
                    type: "GET",
                    url: "/verify-user",
                    headers: {
                        'Authorization': 'Bearer ' + localStorage.token
                    },
                    dataType: "json"
                }).always(function (response) {
                    console.log("Auth", response)
                    if (response.status == "error") {
                        $('button').removeClass('lime').addClass('red').text('Log in failed. Try again.');
                        return
                    }
                    if (response.status == 302) {
                        console.log(response)
                        $jUser = response.responseJSON.authData.user
                        $sjUser = JSON.stringify($jUser);
                        localStorage.setItem('user', $sjUser);
                        $(location).attr('pathname', '/LIMELine/chatroom/')
                    }
                })
            }
        }
    })
})
从localStorage main.js获取数据

localStorage在给定域的所有选项卡上共享。如果不希望出现这种情况,可以改用sessionStorage。但是,作为使用sessionStorage的副作用,当与数据关联的窗口/标记关闭时,数据将被销毁

只读localStorage属性允许您访问文档来源的存储对象;存储的数据跨浏览器会话保存。localStorage与sessionStorage类似,不同之处在于,虽然localStorage中存储的数据没有过期时间,但当页面会话结束时(即页面关闭时),sessionStorage中存储的数据将被清除

sessionStorage属性允许您访问当前源的会话存储对象。会话存储类似于Window.localStorage;唯一的区别是,虽然localStorage中存储的数据没有过期设置,但当页面会话结束时,sessionStorage中存储的数据将被清除。只要浏览器处于打开状态,页面会话就会持续,并且在页面重新加载和恢复过程中仍然有效。在新选项卡或窗口中打开页面将导致启动新会话,这与会话cookie的工作方式不同


非常感谢。我真的不知道他们之间的区别。还有其他区别吗?这些是我所知道的主要区别。localStorage您可以将sorta视为Cookie的替代品。会话存储相同,但范围和寿命较小。
$jUser = JSON.parse(localStorage.user)
$('#frame #sidepanel #profile-img').attr('src', $jUser.avatar)
$('#frame #sidepanel #profile .wrap #full-name').text($jUser.first_name + ' ' + $jUser.last_name)