首页 > 其他分享 >VUE3+signalR实现单点登录

VUE3+signalR实现单点登录

时间:2024-10-30 10:42:34浏览次数:1  
标签:单点 登录 value signalR connection VUE3 message

摘要:在MES项目中,不能多人同时操作,方便任务分配追责,使用signalR实现单点登录

1、在项目中安装依赖

npm i @microsoft/signalr

2、使用:在登录成功的时候与服务器建立连接

  //登录和服务器建立连接、实现单点登录
  const startConnection = async (res: any) => {
    try {
      connection.value = new signalR.HubConnectionBuilder()
        .withUrl("/signalr/singlelogin-hub", {
          accessTokenFactory: () => res
        })
        .configureLogging(signalR.LogLevel.Information)
        .withAutomaticReconnect() // 使用默认重连策略
        .build()

      await connection.value.start()
      // 下线消息
      connection.value.on("Offline", (message: any) => {
        logout()
        ElMessageBox.alert("该用户已在其他地方登录", "登录信息", {
          confirmButtonText: "确认",
          callback: () => {
            location.reload() //强制刷新下线
            ElMessage({
              type: "info",
              message: `已退出登录`
            })
          }
        })
        console.log("接收到下线消息:" + message)
      })
      console.log("Connection started")
    } catch (error) {
      //断线重连
      startConnection(getToken())
      console.error("Error starting connection:", error)
    }
  }

3、在退出登录的时候断开连接

  /** 登出 */
  const logout = () => {
   //这一行代码就可以 connection.value.stop() removeToken() token.value = "" roles.value = [] resetRouter() _resetTagsView() }

 

标签:单点,登录,value,signalR,connection,VUE3,message
From: https://www.cnblogs.com/lgnblog/p/18515395

相关文章

  • Vue3 - 完美解决html2canvas截图不全问题,截图只截取当前可视区域导出图片不全,截屏导出
    前言该解决方案任意前端技术栈通用,不仅限Vue。在vue3(手机H5移动端/微信公众号H5页面)项目开发中,使用html2canvas截屏时发现有一部分未截取到少了一块截图不完整,导出保存图片时发现截图只有一半显示不全,另外还有一个问题就是截图时截取当前可视区域的问题(出现滚动条只保......
  • Vue3+TS中的web Worker实战
    在开始使用WebWorkers之前,首先让我们先了解一下什么是WebWorkersWebWorkers是一种在浏览器后台独立于主线程运行的JavaScript线程,它允许在Web应用程序中进行后台和长时间运行的脚本处理,而不会影响用户的界面性能。WebWorkers通过在后台线程中执行JavaScript脚......
  • 1、前端项目创建(vue3 + vite + element-plus)
    vue3+vite+element-plus项目创建:1、npmcreatevite@latestdata-relationship----templatevue2、npminstall  安装依赖3、npmielement-plus 安装element-plus4、修改main.jsimport{createApp}from'vue'importAppfrom'./App.vue'importElemen......
  • vue3 中 defineExpose 作用
    在Vue3中,`defineExpose`是一个在`<scriptsetup>`语法中使用的函数,它的主要作用是用于显式地暴露组件内部的属性和方法,以便在父组件中可以通过`ref`获取并访问这些属性和方法。一、作用1.控制组件的对外暴露内容在默认情况下,使用`<scriptsetup>`的组件会自动暴露其内部......
  • 【Vue3】第二篇
    Vue3学习第二篇01.事件处理02.事件传参03.事件修饰符04.数组变化侦测05.计算属性06.class绑定07.style绑定08.侦听器09.表单输入绑定10.模板引用01.事件处理在vue当中的事件处理和html、css中的不一样,它单独做了处理。注意:用法中只是用点击事件来举......
  • vue3 svg图像 的实例
    1、先上个图,来自官方:2、说明:图形包括三个组件,一个是多边形、一个圆、一个text(A,B,C,D,E,F...)。3、图形定义:<svgwidth="200"height="200"><PolyGraph:stats="stats"></PolyGraph></svg>这个PolyGraph是一个自定义SFC:<scriptsetup>impo......
  • Vue3用户关注与粉丝列表展示
    文章目录说明功能描述:代码说明该组件主要是通过一个小抽屉进行用户粉丝与关注列表的展示前提:这里用了elementPlus的组件库所以需要配置好elementPlus的组件库环境这里采用的是根据传入的用户名进行查询。也可以修改为根据传入的用户id进行查询功能描述:抽屉窗:使......
  • 前端 (vue3+ts+vite)
    项目结构 cool-admin  ├──buildvite插件  ├──vite.config.tsvite配置文件  ├──tsconfig.jsontypescript配置文件  ├──src源文件  │ ├──main.ts程序入口  │ ├──App.vue页面挂载入口  │ ......
  • JavaScript CSS Vue3 实现一个简单的Loading
    之前项目用到的,后来换其他效果了。放博客里保存一下。效果视频转GIF之后不太流畅……代码<scriptsetuplang="ts">import{onBeforeUnmount,onMounted,ref}from"vue";import{clamp}from"../scripts/Utils";constmaskDiv=ref<HTMLDivElement>(null)co......
  • vue3使用ts和使用js
    1、使用ts<template> <divstyle="display:flex;margin:20px;"> <divstyle="width:20%;border:1pxsolidrgb(221221221);height:80vh;">1</div> <divstyle="width:60%;display:flex;justify-content:cen......