V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cassidyhere
V2EX  ›  程序员

一个浏览器登录两个账号的冲突问题

  •  
  •   cassidyhere · 2019-12-05 14:47:01 +08:00 · 2783 次点击
    这是一个创建于 1799 天前的主题,其中的信息可能已经有所发展或是发生改变。

    同一浏览器,在页面 1 登录账号 A 后,打开页面 2,然后在已登录的页面 2 退出账号 A,登录账号 B,这时回到页面 1.这时页面 1 显示的是 A 的内容,但登录的其实是 B。怎样可以在回到页面 1 的时候更新内容?或者其他解决冲突的办法?

    18 条回复    2019-12-05 16:13:46 +08:00
    shintendo
        1
    shintendo  
       2019-12-05 14:50:47 +08:00   ❤️ 1
    怎样可以在回到页面 1 的时候更新内容
    -----------------------
    F5……
    cassidyhere
        2
    cassidyhere  
    OP
       2019-12-05 14:53:20 +08:00
    @shintendo 我不能让用户按 F5
    cassidyhere
        3
    cassidyhere  
    OP
       2019-12-05 14:54:21 +08:00
    我不是用户,我是后端。。
    wangsongyan
        4
    wangsongyan  
       2019-12-05 14:57:58 +08:00   ❤️ 1
    websocket 刷新
    xiangyuecn
        5
    xiangyuecn  
       2019-12-05 14:58:05 +08:00   ❤️ 1
    登录时往 localStorage 里面存用户名,页面打开第一时间把存储的用户名读取到 js 变量。然后监听 localStorage 事件,只要 js 中的用户名和存储的用户名不一致,立马 reload() 都不用带废话的😏😏😏
    test3207
        6
    test3207  
       2019-12-05 14:59:16 +08:00   ❤️ 1
    ws...
    或者轮询...
    都要前端配合,纯后端应该没法做吧...
    hakono
        7
    hakono  
       2019-12-05 14:59:49 +08:00   ❤️ 1
    页面 JS 脚本后台轮询,检测账号的登陆状态,如果检测到了登出或者用户更改的话就刷新
    cnbattle
        8
    cnbattle  
       2019-12-05 15:01:28 +08:00
    跟前端说啊 前端检测重新更新内容啊 前端的需求 /问题, 让后端处理... 0.0
    levon
        9
    levon  
       2019-12-05 15:01:38 +08:00 via iPhone
    客户说要摘天上的星星,你也答应啰
    BlackGrasshopper
        10
    BlackGrasshopper  
       2019-12-05 15:02:13 +08:00
    document.hidden
    BlackGrasshopper
        11
    BlackGrasshopper  
       2019-12-05 15:37:01 +08:00
    document.addEventListener('visibilitychange', () => {
    console.log(document.hidden)
    })
    Vegetable
        12
    Vegetable  
       2019-12-05 15:39:01 +08:00
    需求有问题,让前端去解决
    opengps
        13
    opengps  
       2019-12-05 15:40:09 +08:00
    这问题哪都有,得看你框架是否所有接口都有统一的身份验证拦截了
    Jrue0011
        14
    Jrue0011  
       2019-12-05 15:42:16 +08:00
    页面 1 虽然内容显示是 A 的,但是后续其他请求操作,后端难道不是根据此时的用户 B 来的吗
    wangsongyan
        15
    wangsongyan  
       2019-12-05 15:52:13 +08:00
    @opengps 看着你的头像,笑出来了,哈哈哈哈
    rioshikelong121
        16
    rioshikelong121  
       2019-12-05 15:59:10 +08:00
    页面 2 Logout 的时候通过 storagechange 等事件,通知页面 1 也跳转回 Login 页面。
    BlackGrasshopper
        17
    BlackGrasshopper  
       2019-12-05 16:10:33 +08:00
    纯前端解决方案是切回当前页面的时候刷新下,或者请求后端接口获取服务器会话信息和浏览器信息做对比,判断是否为一用户,不是一用户当前页面数据肯定是无效了,直接刷新完事
    ```
    //添加页面可见性改变事件
    document.addEventListener('visibilitychange', () => {
    //页面可见性,页面可见说明是切回当前页面
    console.log(document.hidden);
    })
    ```
    wangyzj
        18
    wangyzj  
       2019-12-05 16:13:46 +08:00
    客户说:“如果用你的系统的时候突然我的电脑死机了,怎么办?”
    请回答
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5625 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 01:48 · PVG 09:48 · LAX 17:48 · JFK 20:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.