js+vue—账号异地登录弹窗通知

768 阅读1分钟

同一账号在异地登录,弹窗通知客户,如何做呢?

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