当前位置:首页 > VUE

vue 实现单点登录

2026-03-28 04:28:28VUE

单点登录(SSO)概念

单点登录是一种身份验证机制,允许用户通过一次登录访问多个相互信任的系统。在Vue项目中,通常结合后端(如Spring Security、OAuth2.0)实现。

基于Token的SSO实现

前端流程

  1. 用户登录时,Vue应用向后端发送认证请求(如用户名/密码)。
  2. 后端验证成功后返回Token(如JWT),前端存储Token至localStorage或cookie。
  3. 后续请求在HTTP头中携带Token(如Authorization: Bearer <token>)。
// Vue中封装axios请求拦截器
import axios from 'axios';
axios.interceptors.request.use(config => {
  const token = localStorage.getItem('sso_token');
  if (token) config.headers.Authorization = `Bearer ${token}`;
  return config;
});

跨域SSO方案

使用OAuth2.0授权码模式

  1. 主系统登录后重定向到认证中心,携带client_idredirect_uri
  2. 认证中心验证通过后返回授权码至redirect_uri
  3. Vue应用通过授权码向后台换取Token。
// 在Vue路由守卫中检查登录状态
router.beforeEach((to, from, next) => {
  if (!localStorage.getItem('sso_token') && to.meta.requiresAuth) {
    window.location.href = `https://auth-center.com/login?redirect=${encodeURIComponent(window.location.href)}`;
  } else {
    next();
  }
});

共享Session方案

适用于同域名不同子路径

  1. 设置cookie的domain为顶级域名(如.example.com)。
  2. 所有子系统的登录状态通过共享cookie中的sessionId验证。
// 设置cookie
document.cookie = `sessionId=${sessionId}; domain=.example.com; path=/`;

注意事项

  • Token需设置合理有效期,推荐结合refreshToken机制。
  • 敏感操作应进行二次验证。
  • 生产环境必须使用HTTPS保证传输安全。
  • 退出登录时需同步清理所有系统的认证状态。

第三方SSO集成

可接入社会化登录(如微信、Google登录):

vue 实现单点登录

  1. 使用SDK(如vue-auth0)初始化配置。
  2. 处理回调页面获取用户信息。
// 示例:Auth0集成
import { Auth0Plugin } from '@auth0/auth0-vue';
Vue.use(Auth0Plugin, {
  domain: 'your-domain.auth0.com',
  clientId: 'your-client-id',
  redirectUri: window.location.origin
});

标签: 单点vue
分享给朋友:

相关文章

vue手动实现弹窗

vue手动实现弹窗

实现弹窗组件的基本结构 在Vue中手动实现弹窗组件,需要创建一个独立的弹窗组件,并通过props控制其显示与隐藏。弹窗组件通常包含遮罩层、内容区域和关闭按钮。 <template>…

computed vue 实现

computed vue 实现

computed 在 Vue 中的基本用法 Vue 的 computed 属性用于声明依赖于其他数据的计算属性。当依赖的数据变化时,计算属性会自动重新计算并缓存结果。 export defaul…

vue实现动画

vue实现动画

Vue 实现动画的方法 Vue 提供了多种方式来实现动画效果,包括内置的过渡系统、第三方动画库以及直接操作 CSS 或 JavaScript 动画。 使用 Vue 内置过渡系统 Vue 的 <…

vue实现tree

vue实现tree

Vue 实现 Tree 组件 使用 Vue 实现 Tree 组件可以通过递归组件的方式来实现层级结构展示。以下是一个完整的实现方法: 基础递归组件实现 创建 Tree 组件文件 Tree.vue,使…

vue实现尺子

vue实现尺子

Vue 实现尺子组件 实现一个尺子组件可以通过 Canvas 或纯 CSS 完成。以下是两种常见实现方式: 使用 Canvas 绘制尺子 通过 Canvas 动态绘制刻度线和数字,适合需要高精度或动…

vue广播实现

vue广播实现

vue广播实现 在Vue中实现广播功能可以通过事件总线(Event Bus)或Vuex来完成。以下是两种常见的实现方式: 使用事件总线(Event Bus) 事件总线是一种简单的跨组件通信方式,适用…