vue实现单点
Vue 实现单点登录(SSO)方案
单点登录(SSO)允许用户通过一次登录访问多个相关但独立的系统。在 Vue 项目中实现 SSO 通常需要结合后端认证服务(如 OAuth2.0、JWT 或 CAS)。
基于 JWT 的实现方式
-
前端登录跳转
在 Vue 中通过window.location.href跳转到统一认证中心(如/sso/login)。认证成功后,后端返回 JWT Token 并重定向回前端页面。 -
存储 Token
将返回的 Token 存储在localStorage或Vuex中,后续请求通过axios拦截器自动附加到请求头:
// axios 拦截器示例 axios.interceptors.request.use(config => { const token = localStorage.getItem('sso_token'); if (token) config.headers.Authorization = `Bearer ${token}`; return config; }); -
Token 验证与刷新
后端需提供验证接口(如/sso/validate),前端定期检查 Token 有效性。若失效,跳转至 SSO 登录页。
基于 OAuth2.0 的流程
-
授权码模式(推荐)

- 前端引导用户跳转至授权服务器(如
https://auth-server.com/oauth/authorize?response_type=code&client_id=xxx)。 - 授权后重定向回前端,通过
code换取access_token(需后端配合,避免前端暴露client_secret)。
- 前端引导用户跳转至授权服务器(如
-
隐式模式(简化模式)
直接通过前端重定向获取access_token(适用于纯前端应用,但安全性较低):// 重定向示例 window.location.href = `https://auth-server.com/oauth/authorize?response_type=token&client_id=xxx&redirect_uri=${encodeURIComponent(window.location.origin)}`;
跨域与 Cookie 处理
-
跨域支持
确保后端配置 CORS 头(如Access-Control-Allow-Origin),前端axios设置withCredentials: true以携带 Cookie。 -
子域共享 Cookie
若 SSO 系统共享父域(如.example.com),设置 Cookie 的domain属性为父域。
第三方库推荐
- vue-auth:集成 JWT、OAuth2.0 的 Vue 插件。
- oidc-client-js:支持 OpenID Connect 的库,适用于企业级 SSO。
安全注意事项
- 避免在前端存储敏感信息(如
client_secret)。 - 使用 HTTPS 确保通信安全。
- 实现 Token 过期自动注销逻辑。
通过以上方法,Vue 项目可灵活对接各类 SSO 服务,具体实现需根据后端认证协议调整。






