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