当前位置:首页 > uni-app

uniapp 单点登录

2026-02-05 20:50:39uni-app

单点登录(SSO)概念

单点登录允许用户通过一次认证访问多个相互信任的应用系统。在UniApp中实现SSO通常需要结合后端服务(如OAuth2.0、JWT等)和前端逻辑。

实现方案一:基于JWT的SSO

核心流程
用户登录后,后端生成JWT令牌并返回给UniApp客户端。客户端存储令牌(如localStorage),后续请求携带该令牌进行鉴权。

代码示例(UniApp端)

// 登录请求
uni.request({
  url: 'https://api.example.com/login',
  method: 'POST',
  data: { username: 'user', password: '123456' },
  success: (res) => {
    if (res.data.token) {
      uni.setStorageSync('token', res.data.token); // 存储令牌
    }
  }
});

// 请求拦截(携带令牌)
uni.addInterceptor('request', {
  invoke(args) {
    args.header = {
      ...args.header,
      Authorization: `Bearer ${uni.getStorageSync('token')}`
    };
  }
});

实现方案二:基于OAuth2.0的SSO

核心流程
通过授权服务器统一认证,获取access_token。UniApp作为客户端,通过跳转授权页或静默请求完成登录。

步骤说明

  1. 跳转至授权页(如微信OAuth2.0):

    uni.navigateTo({
      url: 'https://auth.example.com/oauth?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI'
    });
  2. 通过redirect_uri回调解析code,换取access_token

跨域与存储注意事项

  • 域名配置:确保manifest.json中配置合法域名(如微信小程序需加入request白名单)。
  • 令牌安全:避免明文存储敏感信息,推荐使用uni.setStorageSync加密或后端校验时效性。

第三方平台集成示例(微信小程序)

通过wx.login获取code,传给后端换取用户凭证:

uniapp 单点登录

wx.login({
  success: (res) => {
    uni.request({
      url: 'https://api.example.com/wechat-auth',
      data: { code: res.code }
    });
  }
});

调试与优化建议

  • 使用uni.getSystemInfo检测运行环境(H5/小程序/App),适配不同平台的SSO流程。
  • 捕获uni.request的失败回调,处理令牌过期或失效场景(如跳转重新登录)。

通过上述方法,UniApp可实现高效的单点登录,具体技术选型需结合项目需求和后端架构。

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

相关文章

uniapp 推送

uniapp 推送

uniapp 推送实现方法 uniapp 推送功能可以通过多种方式实现,主要包括使用第三方推送服务、原生插件或云服务。以下是几种常见的实现方案: 使用 UniPush 服务 UniPush 是 D…

uniapp发布到应用商店

uniapp发布到应用商店

发布到苹果App Store 确保开发者账号已注册并加入Apple Developer Program,年费99美元。在Xcode中生成iOS发布证书(.p12)和描述文件(Provisioning…

uniapp支付功能怎么实现

uniapp支付功能怎么实现

uniapp支付功能实现方法 准备工作 注册微信支付、支付宝等平台的开发者账号,获取必要的商户ID(mch_id)、API密钥(key)、应用ID(appid)等信息。确保项目已配置好相关支付SDK。…

uniapp分享到facebook

uniapp分享到facebook

使用uniapp分享到Facebook的方法 在uniapp中实现分享到Facebook功能,可以通过调用原生插件或使用第三方SDK。以下是具体实现方式: 安装Facebook SDK插件 在uni…

uniapp切片

uniapp切片

uniapp 切片实现方法 在 uniapp 中实现切片功能通常指的是对图片或数据进行分割处理。以下是几种常见的切片实现方式: 图片切片展示 通过 CSS 和 JavaScript 实现图片的网格化…

uniapp使用axios无法请求

uniapp使用axios无法请求

uniapp中使用axios请求问题解决方案 在uniapp中使用axios可能会遇到跨域、请求失败或兼容性问题。以下是常见原因及解决方法: 检查axios安装与引入 确保已正确安装axios:…