Angular: 区分不同选项卡中的会话

Angular: differentiate between sessions in different tabs

我正在开发网络应用程序。前端是 Angular,后端是带有 django rest 框架的 Rest API。对于某些客户要求,我需要 django rest api 能够区分具有 sessionid 的轮询请求。经过一些搜索后,我发现我可以在 REST API 端识别会话,值为:

request.session.session_key

但这不是最佳选择,因为对于两个不同的选项卡,我得到相同的 session_key 和请求中其余 api 收到的所需 sessionId 应该识别特定选项卡的会话.因此,对于不同的 PC 和主机 IP 地址,或仅浏览器来说,sessionid 不是唯一的,而且它应该为两个不同的选项卡获得两个不同的 sessionid。

django 请求对象是否包含其他标识来标识主机选项卡?

估计在Angular那边可以找到解决方法。

Angular 和打字稿中有没有办法识别标签会话?

我不知道你是否能在一些浏览器js变量中找到相关的tabid值,但你可以使用localStorage和sessionStorage创建它。 使用本地存储,您可以创建变量,它们的值可以被整个选项卡查看。 sessionStarage 用于创建仅在实际选项卡中查看的值的项目。 我们将使用 localStorage 存储最后一个受影响的选项卡 ID,我们将使用 sessionStorage 存储实际的 tabid 值,如下所示:

let lasttabid= localStorage.getItem("lastTabId");
    let tabid= sessionStorage.getItem("tabId"); 
    let lasttabidint: number;
    console.log("lasttabid: "+lasttabid+" tabid: "+tabid);
    if(tabid === undefined || tabid == null || tabid.length<=0 || !tabid){
        if(lasttabid === undefined || lasttabid == null || lasttabid.length<=0 || !lasttabid){
            sessionStorage.setItem("tabId", "1");
            localStorage.setItem("lastTabId", "1");
            tabid= "1";
        } else {
            lasttabidint= +lasttabid;
            sessionStorage.setItem("tabId", String(++lasttabidint));
            localStorage.setItem("lastTabId", String(lasttabidint));
            tabid= String(lasttabidint);
        }
    }

console.log("actual tab id is : "+ tabid);

您想要的结果是tabid值。