同一账号在异地登录,弹窗通知客户,如何做呢?
1、后端进行判别,异地登录时,给到前端code码
比如,当异地登录时,code码为402
2、在后置拦截器中根据code码进行弹窗提示
下方为request.js中处理弹窗提示的代码,作为参考。
import router from '@/router'
import { Message, Modal } from 'view-design'
const toLogin = () => {
router.replace({
path: '/login'
})
}
const myRequest = axios.create({
timeout: 1000 * 60 * 5
})
myRequest.interceptors.response.use(
response => {
if (response.status === 200) {
const { code } = response.data
// 异地登录
if (code === 402) {
// 全局判断是否已打开402导致的弹窗,如果没有打开,才打开弹窗。否则会导致多个请求连续触发时,打开多个重复的弹窗。
if (!window.hasPoped402Modal) {
//打开402导致的弹窗
Modal.warning({
title: '提示',
content: '<p>您的账号在其他设备登录,若非本人操作,请及时修改登录密码。</p>',
onOk: () => {
toLogin()
// 已点击确认,跳转至登录页,此时弹窗已被用户关闭,重置弹窗状态为false。
window.hasPoped402Modal = false
}
})
// 全局标记,打开402导致的弹窗
window.hasPoped402Modal = true
}
}
return Promise.resolve(response.data)
} else {
return Promise.reject(response)
}
}
)
export default myRequest