当前位置:首页 > 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实名认证实现方法 使用uniCloud实名认证插件 uniapp官方提供了uniCloud的实名认证插件,可快速集成到项目中。插件支持身份证识别、活体检测等功能,需在uniCloud控制台…

uniapp旋转横屏

uniapp旋转横屏

实现横屏模式的方法 在UniApp中实现横屏模式,可以通过配置页面方向或使用CSS旋转实现。以下是两种常见方法: 修改manifest.json配置 在项目的manifest.json文件中,找到"…

base64转换方法uniapp

base64转换方法uniapp

Base64 转换方法(UniApp) 在 UniApp 中实现 Base64 编码和解码,可以通过原生 JavaScript 的 btoa 和 atob 方法,或使用第三方库如 base64-js。…

uniapp gpio

uniapp gpio

在 uniapp 中直接操作 GPIO(通用输入输出)通常需要依赖原生平台的硬件接口,因为 uniapp 本身是基于前端技术的跨平台框架,不直接提供硬件访问能力。以下是实现 GPIO 控制的几种方法:…

uniapp 头条

uniapp 头条

uniapp 适配今日头条(字节跳动小程序)的方法 环境配置 确保HBuilderX版本在2.7.0以上,manifest.json中勾选"字节跳动小程序"平台。在开发者工具中配置正确的AppID和项…

uniapp grid

uniapp grid

uniapp grid 布局实现方法 在 uniapp 中实现 grid 布局可以通过多种方式完成,包括使用内置组件、CSS Grid 或第三方插件。以下是几种常见的实现方法: 使用 uni-gri…