Authing 文档
文档
快速开始
概念
使用指南
开发集成
应用集成
加入 APN
多租户(内测版)
旧版
快速开始
概念
使用指南
开发集成
应用集成
加入 APN
多租户(内测版)
旧版
使用指南
  • 快速开始

  • 对用户进行认证
  • 对用户进行权限管理
  • 授权
  • 管理用户账号
  • 管理用户目录
  • 同步中心(BETA)
  • 自建应用
  • ASA 表单代填
  • 单点登录 SSO
  • 成为联邦认证身份源
  • 连接外部身份源(IdP)
  • 打通微信生态
  • 迁移用户到 Authing
    • 使用 SDK 导入用户
    • 配置自定义密码函数
    • 从企业微信、钉钉等第三方身份源导入用户
  • 管理组织机构
  • 自动化
  • 审计日志
  • 配置安全信息

  • 配置用户池信息

  • 部署方案
  • 常见问题 FAQs

  1. 使用指南
  2. /
  3. 迁移用户到 Authing
  4. /
  5. 使用 SDK 导入用户

¶ 使用 SDK 导入用户

更新时间: 2022-03-11 11:21:01

Authing 同时支持了 Java、JavaScript/Node.js、Python、PHP、C#、Go、Ruby 等多种语言的 SDK:

  • Java/Kotlin
  • JavaScript/Node.js
  • Python
  • PHP
  • C#
  • Go
  • Ruby

本文以 Node.js 为例,介绍如何编写脚本导入用户,你可以选择自己熟悉的语言。

¶ 第一步:使用自定义密码函数(可选)

如果你的用户数据表中密码字段是明文,可以跳过此步骤;如果是密文,需要进入基础配置 -> 密码管理 -> 自定义密码加密方法开启选项并编写用于加密和验证密码的函数。详情请见:编写自定义密码加密函数。

¶ 第二步:导出你的用户数据

请将你的用户数据导出为 JSON 格式,内容为一个数组,每个元素是一个对象,其中一个元素对应一条用户的信息,例如:

[
  {
    "uid": "1",
    "nickname": "zhang",
    "account_id": "zhang",
    "mail": "test1@123.com",
    "password": "$2b$12$nCa3WDbsc3tvM57ifzjwrOAGGuNK7EPV0R17WKcW6f13NZvX97yLe",
    "phone": "13100000001",
    "emailVerified": true,
    "loginsCount": 4
  },
  {
    "uid": "2",
    "nickname": "wang",
    "account_id": "wang",
    "mail": "test2@123.com",
    "password": "$2b$12$HGloOlfz1HzD0v/r5m1r7OCMcx6X85eC5.At3Ckxe.Jn/u/Za/yy2",
    "phone": "13100000002",
    "emailVerified": false,
    "loginsCount": 12
  },
  {
    "uid": "3",
    "nickname": "zhao",
    "account_id": "zhao",
    "mail": "test3@123.com",
    "password": "$2b$12$ia1oUZZFbEUpLvuqUsKideQq9lVkf2kq9vFaTvp7dlfeCx8UlTmDu",
    "phone": "13100000003",
    "emailVerified": true,
    "loginsCount": 0
  }
]

¶ 第三步:确认用户字段映射关系

在正式开始导入之前,你需要先确认你的用户结构与 Authing 用户字段之间的映射关系,你可以在这里获取 Authing 用户所有字段及其释义。

¶ 第四步:导入用户数据到 Authing

如果你没有 NodeJS 环境,需要先安装 NodeJS (opens new window)。

创建一个 index.js 文件。

将以下 js 脚本粘贴到 index.js:

const fs = require('fs')
const path = require('path')

const { ManagementClient } = require('authing-js-sdk')
const userPoolId = 'xxxxxxxxxxxxxxxxxxx'
const secret = 'xxxxxxxxxxxxxxxxxxx'

// 如果文件较大建议分批次读入
// 请将用户信息与本文件保存在同一个目录,文件内容为用户数据的数组 JSON,一个元素为一个用户的信息对象
let users = fs.readFileSync(path.resolve('users.json'), { encoding: 'utf8' })
users = JSON.parse(users)
async function main() {
  const managementClient = new ManagementClient({
    userPoolId,
    secret,
  })

  for (let i = 0; i < users.length; i++) {
    let yourUser = users[i]
    try {
      // 在此完成字段对齐
      await managementClient.users.create(
        {
          nickname: yourUser.nickname,
          password: yourUser.password,
          email: yourUser.mail,
          emailVerified: yourUser.emailVerified,
          phone: yourUser.phone,
          loginsCount: yourUser.loginsCount,
          // 存储原始数据,以备使用
          oauth: JSON.stringify(yourUser),
        },
        {
          /**
           * 开启这个开关,password 字段会直接写入 Authing 数据库,Authing 不会再次加密此字段
           * 如果你的密码不是明文存储,你应该保持开启,并编写密码函数计算
           */
          keepPassword: true,
        }
      )
    } catch (err) {
      console.log(err)
      // 将导入失败的用户写入文件
      fs.writeFileSync(
        path.resolve('users_failed.json'),
        JSON.stringify(yourUser) + '\n',
        {
          flag: 'a',
        }
      )
    }
  }
}

main()

复制完成后请对字段进行对齐,再执行

$ npm install authing-js-sdk
$ node index.js

代码可在 GitHub 查看:users-migration (opens new window)

¶ 获取帮助

遇到问题?联系我们 (opens new window),Feel free to talk.

上一篇: 迁移用户到 Authing 下一篇: 配置自定义密码函数

本文是否有解决您的问题?

如果遇到其他问题,你可以在 authing-chat/community 联系我们。

  • 第一步:使用自定义密码函数(可选)
  • 第二步:导出你的用户数据
  • 第三步:确认用户字段映射关系
  • 第四步:导入用户数据到 Authing
  • 获取帮助

用户身份管理

集成第三方登录
手机号闪验 (opens new window)
通用登录表单组件
自定义认证流程

企业内部管理

单点登录
多因素认证
权限管理

开发者

开发文档
框架集成
博客 (opens new window)
GitHub (opens new window)
社区用户中心 (opens new window)

公司

服务状态
15559944612
sales@authing.cn
北京市朝阳区北辰世纪中心 B 座 16 层(总)
成都市高新区天府五街 200 号 1 号楼 B 区 4 楼 406 室(分)

京ICP备19051205号

beian京公网安备 11010802035968号

© 北京蒸汽记忆科技有限公司