uni-app多个前端子项目下,如何配置uni-id关联不同的用户表(一个uni-app子项目一个用户表)

发布于 1周前 作者 songsunli 来自 Uni-App

uni-app多个前端子项目下,如何配置uni-id关联不同的用户表(一个uni-app子项目一个用户表)

如题,我想用uni-id来作为项目中的用户体系。但是如果一个项目有多个服务端(比如后台管理系统,多个app界面端),每个服务端的用户表不一样,但是他们之间是有业务关系的,所以只能在一个服务空间,那怎么配置才能实现多个端各自对应某个用户表呢

3 回复

不能配置多个表,用户都在一个uni-id-users表里,但uni-id自己会通过字段dcloud_appid来区分隔离不同端的用户


那这个appid在哪里配置呢

uni-app中,若你希望在不同的前端子项目中关联不同的用户表,你可以利用uni-id提供的灵活配置和扩展能力来实现。以下是一个简要的代码案例,展示如何在不同子项目中配置uni-id以关联不同的用户表。

1. 安装和初始化uni-id

首先,确保你已经在项目中安装了uni-id插件,并在manifest.json中进行了配置。

// manifest.json
{
  "mp-weixin": { // 或其他平台配置
    "usingComponents": true,
    "permission": {},
    "plugins": {
      "uni-id": {
        "version": "latest", // 或指定版本号
        "provider": "uniCloud"
      }
    }
  }
}

2. 配置uni-id服务端

uniCloud云函数中,你可以通过修改uni-id的配置文件来实现不同子项目关联不同用户表。

// cloudfunctions/uni-id-cloudfunctions/uni-id-server/config.js
module.exports = {
  database: () => {
    const projectId = uniCloud.getFunctionContext().PROJECT_ID; // 获取当前项目ID
    let userTable;
    switch (projectId) {
      case 'projectA':
        userTable = 'user_table_A';
        break;
      case 'projectB':
        userTable = 'user_table_B';
        break;
      // 可以继续添加更多项目配置
      default:
        userTable = 'default_user_table';
    }
    return {
      content: {
        user: userTable,
      },
    };
  },
  // 其他配置...
};

3. 前端子项目配置

在前端子项目中,你可以通过初始化uni-id客户端时传递不同的配置参数,但通常uni-id的前端配置较为简单,主要是登录、注册等功能的调用。关键在于确保云函数配置正确,前端调用将自动基于云函数中的配置进行处理。

// 在前端子项目中初始化uni-id(示例代码,实际初始化可能有所不同)
uni.cloud.callFunction({
  name: 'uni-id-get-token',
  data: {
    action: 'create', // 注册或登录的动作
    // 其他参数如用户名、密码等
  },
  success: res => {
    console.log('登录/注册成功', res);
  },
  fail: err => {
    console.error('登录/注册失败', err);
  }
});

总结

通过上述配置,你可以在uni-app的不同子项目中,通过修改uniCloud云函数中的uni-id配置,实现关联不同的用户表。前端调用uni-id相关功能时,将自动基于云函数的配置进行用户数据的存储和查询。这种方式充分利用了uni-iduniCloud的灵活性,使得多子项目共用一套后端服务的同时,能够灵活处理各自的用户数据。

回到顶部