Authing 文档
文档
概念
使用指南
开发集成
应用集成
旧版
概念
使用指南
开发集成
应用集成
旧版
开发集成
  • 登录组件
  • 单点登录(SSO)
  • JavaScript/Node.js
  • Java / Kotlin
    • 用户认证模块
    • 管理模块
      • 管理用户
      • 管理角色
      • 管理资源、权限、应用访问控制
      • 管理用户自定义字段
      • 管理分组
      • 管理组织机构
      • 管理用户池配置
      • 管理注册白名单
      • 管理应用
  • Python
  • C#
  • PHP
  • Go
  • Ruby
  • Swift
  • Android
  • React Native
  • 微信小程序
  • 微信网页授权
  • 框架集成
  • 错误代码
  1. 开发集成
  2. /
  3. Java / Kotlin
  4. /
  5. 管理模块
  6. /
  7. 管理用户

¶ 管理用户

更新时间: 2021-04-13 02:58:31

Authing 管理模块。

此模块可以进行用户目录增删改查、搜索用户、刷新用户 token、管理用户分组、管理用户角色、管理用户策略授权等操作。

¶ 创建用户

UsersManagementClient().create(userInfo)

此接口将以管理员身份创建用户,不需要进行手机号验证码检验等安全检测。

¶ 参数

  • userInfo <CreateUserInput> 用户资料
  • userInfo.email <string> 邮箱,用户池内唯一
  • userInfo.emailVerified <boolean> 邮箱是否已验证
  • userInfo.phone <string> 手机号
  • userInfo.phoneVerified <boolean> 手机号是否验证
  • userInfo.unionid <string> 以社会化登录的用户该字段为用户在第三方社会化登录服务商中的唯一 ID
  • userInfo.openid <string> 微信登录返回的 openid
  • userInfo.password <string> 密码
  • userInfo.registerSource <string> 注册来源,可以多选
  • userInfo.username <string> 用户名
  • userInfo.nickname <string> 昵称
  • userInfo.photo <string> 头像
  • userInfo.company <string> 公司
  • userInfo.browser <string> 浏览器
  • userInfo.loginsCount <number> 登录次数,当你从原有用户系统迁移到 Authing 时可以设置该字段。
  • userInfo.lastLogin <string> 上次登录时间, 符合 ISO8601 格式的时间字符串。(如 "2017-06-07T14:34:08.700Z", "2017-06-07T14:34:08.700 or "2017-06-07T14:34:08+04:00")
  • userInfo.lastIP <string> 用户最近一次登录(或其他活动)的 IP
  • userInfo.signedUp <string> 注册时间,符合 ISO8601 格式的时间字符串。(如 "2017-06-07T14:34:08.700Z", "2017-06-07T14:34:08.700 or "2017-06-07T14:34:08+04:00")
  • userInfo.blocked <boolean> 账号是否被禁用
  • userInfo.isDeleted <boolean> 标记账号是否被删除
  • userInfo.device <string> 设备
  • userInfo.lastIP <string> 最近登录的 IP
  • userInfo.name <string> Name
  • userInfo.givenName <string> Given Name
  • userInfo.familyName <string> Family Name
  • userInfo.middleName <string> Middle Name
  • userInfo.profile <string> Profile Url
  • userInfo.preferredUsername <string> Preferred Name
  • userInfo.website <string> 个人网站
  • userInfo.gender <string> 性别, M(Man) 表示男性、F(Female) 表示女性、未知表示 U(Unknown)
  • userInfo.birthdate <string> 生日
  • userInfo.zoneinfo <string> 时区
  • userInfo.locale <string> 语言
  • userInfo.address <string> 地址
  • userInfo.streetAddress <string> 街道地址
  • userInfo.locality <string>
  • userInfo.region <string> 地域
  • userInfo.postalCode <string> 邮编
  • userInfo.city <string> 城市
  • userInfo.province <string> 省份
  • userInfo.country <string> 国家
  • userInfo.externalId <string> 用户外部 ID

¶ 示例

String email = "test@example.com";
String password = "123456";
User user = managementClient.users().create(new CreateUserInput().withEmail(email).withPassword(password)).execute();

¶ 修改用户资料

UsersManagementClient *().update(id, updates)

修改用户资料

¶ 参数

  • id <string> 用户 ID
  • updates <UpdateUserInput> 修改的用户资料
  • updates.email <string> 邮箱
  • updates.emailVerified <boolean> 邮箱是否已验证
  • updates.phone <string> 手机号
  • updates.phoneVerified <boolean> 手机号是否验证
  • updates.unionid <string> 以社会化登录的用户该字段为用户在第三方社会化登录服务商中的唯一 ID
  • updates.openid <string> 微信登录返回的 openid
  • updates.password <string> 密码
  • updates.registerSource <string> 注册来源,可以多选
  • updates.tokenExpiredAt <string> token 过期时间,符合 ISO8601 格式的时间字符串。(如 "2017-06-07T14:34:08.700Z", "2017-06-07T14:34:08.700 or "2017-06-07T14:34:08+04:00")。 将该字段设置为小于当前时间可以让用户的 token 失效。
  • updates.username <string> 用户名
  • updates.nickname <string> 昵称
  • updates.photo <string> 头像
  • updates.company <string> 公司
  • updates.browser <string> 浏览器
  • updates.loginsCount <number> 登录次数,当你从原有用户系统迁移到 Authing 时可以设置该字段。
  • updates.lastLogin <string> 上次登录时间, 符合 ISO8601 格式的时间字符串。(如 "2017-06-07T14:34:08.700Z", "2017-06-07T14:34:08.700 or "2017-06-07T14:34:08+04:00")
  • updates.lastIP <string> 用户最近一次登录(或其他活动)的 IP
  • updates.signedUp <string> 注册时间,符合 ISO8601 格式的时间字符串。(如 "2017-06-07T14:34:08.700Z", "2017-06-07T14:34:08.700 or "2017-06-07T14:34:08+04:00")
  • updates.blocked <boolean> 账号是否被禁用
  • updates.device <string> 设备
  • updates.lastIP <string> 最近登录的 IP
  • updates.name <string> Name
  • updates.givenName <string> Given Name
  • updates.familyName <string> Family Name
  • updates.middleName <string> Middle Name
  • updates.profile <string> Profile Url
  • updates.preferredUsername <string> Preferred Name
  • updates.website <string> 个人网站
  • updates.gender <string> 性别, M(Man) 表示男性、F(Female) 表示女性、未知表示 U(Unknown)
  • updates.birthdate <string> 生日
  • updates.zoneinfo <string> 时区
  • updates.locale <string> 语言
  • updates.address <string> 地址
  • updates.streetAddress <string> 街道地址
  • updates.locality <string>
  • updates.region <string> 地域
  • updates.postalCode <string> 邮编
  • updates.city <string> 城市
  • updates.province <string> 省份
  • updates.country <string> 国家
  • userInfo.externalId <string> 用户外部 ID

¶ 示例

¶ 获取用户详情

UsersManagementClient().detail(userId)

通过用户 ID 获取用户详情,如果你想通过 token 获取用户详情,请使用 AuthenticationClient SDK 。

¶ 参数

  • userId <string> 用户 ID

¶ 示例

User result = managementClient.users().detail("userId").execute();

¶ 删除用户

UsersManagementClient().delete(userId)

删除用户

¶ 参数

  • userId <string> 用户 ID

¶ 示例

CommonMessage message = managementClient.users().delete("userId").execute();

¶ 批量删除用户

UsersManagementClient().deleteMany(userIds)

批量删除用户

¶ 参数

  • userIds <string[]> 用户 ID 列表

¶ 示例

ArrayList<String> userIds = new ArrayList<>();
userIds.add("userId");
CommonMessage message = managementClient.users().deleteMany(userIds).execute();

¶ 批量获取用户

UsersManagementClient().batch(userIds)

通过 ID 批量获取用户详情

¶ 参数

  • userIds <string[]> 用户 ID 列表

¶ 示例

ArrayList<String> userIds = new ArrayList<>();
userIds.add("userId");
List<User> users = managementClient.users().batch(userIds).execute();

¶ 获取用户列表

UsersManagementClient().list(page, limit)

获取用户池用户列表

¶ 参数

  • page <number> 页码数, 从 1 开始 默认值为 : 1。
  • limit <number> 每页包含的用户数 默认值为 : 10。

¶ 示例

PaginatedUsers users = managementClient.users().list().execute();

¶ 检查用户是否存在

UsersManagementClient().exists(options)

检查用户是否存在,目前可检测的字段有用户名、邮箱、手机号。

¶ 参数

  • options <Object>
  • options.username <string> 用户名,区分大小写。
  • options.email <string> 邮箱,邮箱不区分大小写。
  • options.phone <string> 手机号

¶ 示例

Boolean exists = managementClient.users().exists(new IsUserExistsParam().withUsername("test")).execute();

¶ 查找用户

UsersManagementClient().find(options)

通过用户名、邮箱、手机号查找用户

¶ 参数

  • options <Object>
  • options.username <string> 用户名,区分大小写。
  • options.email <string> 邮箱,邮箱不区分大小写。
  • options.phone <string> 手机号

¶ 示例

¶ 搜索用户

UsersManagementClient().search(query, options, page, limit)

根据关键字搜索用户

¶ 参数

  • query <null> 搜索内容
  • options <string[]> 选项
  • options.fields <string[]> 搜索用户字段,如果不指定,默认会从 username、nickname、email、phone、company、name、givenName、familyName、middleName、profile、preferredUsername 这些字段进行模糊搜索。 如果你需要精确查找,请使用 find 方法。
  • page <number> 默认值为 : 1。
  • limit <number> 默认值为 : 10。

¶ 示例

String query = "query";
PaginatedUsers users = managementClient.users().search(query).execute();

¶ 刷新用户 token

UsersManagementClient().refreshToken(id)

刷新用户 token

¶ 参数

  • id <string> 用户 ID

¶ 示例

RefreshToken token = managementClient.users().refreshToken("userId").execute();

¶ 获取用户分组列表

UsersManagementClient().listGroups(userId)

获取用户的分组列表

¶ 参数

  • userId <string> 用户 ID

¶ 示例

managementClient.users().listGroups("userId").execute();

¶ 加入分组

UsersManagementClient().addGroup(userId, group)

将用户加入分组

¶ 参数

  • userId <string> 用户 ID
  • group <string> 分组 code

¶ 示例

managementClient.users().addGroup("userId", "groupId").execute();

¶ 退出分组

UsersManagementClient().removeGroup(userId, group)

退出分组

¶ 参数

  • userId <string> 用户 ID
  • group <string> 分组 code

¶ 示例

managementClient.users().removeUdv("userId", "groupId").execute();

¶ 获取用户角色列表

UsersManagementClient().listRoles(userId)

获取用户的角色列表

¶ 参数

  • userId <string> 用户 ID

¶ 示例

PaginatedRoles roles = managementClient.users().listRoles("userId").execute();

¶ 添加角色

UsersManagementClient().addRoles(userId, roles)

将用户加入角色

¶ 参数

  • userId <string> 用户 ID
  • roles <string> 角色 code 列表

¶ 示例

ArrayList<String> roles = new ArrayList<>();
roles.add("role code");
managementClient.users().addRoles("userId", roles);

¶ 移除角色

UsersManagementClient().removeRoles(userId, roles)

将用户从角色中移除

¶ 参数

  • userId <string> 用户 ID
  • roles <string> 角色 code 列表

¶ 示例

ArrayList<String> roles = new ArrayList<>();
roles.add("role code");
CommonMessage message = managementClient.users().removeRoles("userId", roles).execute();

¶ 获取用户所在组织机构

UsersManagementClient().listOrgs(userId)

获取用户所在组织机构,以及他在该组织机构内的的节点路径

¶ 参数

  • userId <string> 用户 ID

¶ 示例

List<List<Org>> orgs = managementClient.users().listOrgs("userId").execute();

¶ 获取用户自定义数据

UsersManagementClient().listUdv(userId)

获取用户的所有自定义数据。

¶ 示例

List<UserDefinedData> list = managementClient.users().listUdv("USER_ID").execute();

¶ 返回值

  • Promise<UserDefinedData>

¶ 示例数据

[
  {
    "key": "school",
    "dataType": "STRING",
    "value": "华中科技大学",
    "label": "学校"
  }
]

¶ 设置自定义数据

UsersManagementClient().setUdv(userId, key, value)

设置用户的自定义字段,需要用户池配置了该字段之后才能设置,且传入值的类型必须和定义的类型匹配。

¶ 参数

  • userId <string> 用户 ID。
  • key <string> 自定义字段的 key 。
  • value <string> 所设置的值,传入值的类型必须和定义的类型匹配。

¶ 示例

List<UserDefinedData> list = managementClient.users().setUdv('USER_ID', 'school', '华中科技大学').execute();

¶ 删除自定义数据

UsersManagementClient().removeUdv(userId, key)

删除自定义数据。

¶ 参数

  • userId <string> 用户 ID。
  • key <string> 自定义字段的 key 。

¶ 示例

List<UserDefinedData> list = managementClient.users().removeUdv('school').execute();

¶ 获取用户被授权的所有资源列表

managementClient.users().listAuthorizedResources(namespace)

获取一个用户被授权的所有资源,用户被授权的所有资源里面包括从角色、分组、组织机构继承的资源。

¶ 参数

  • namespace <String> 权限分组的 code,详情请见使用权限分组管理权限资源。

¶ 示例

PaginatedAuthorizedResources res = managementClient.users().listAuthorizedResources(namespace).execute();

¶ 示例数据

  • type 为资源类型,一共有以下几种资源类型
    • DATA: 数据类型;
    • API: API 类型数据;
    • MENU: 菜单类型数据;
    • BUTTON: 按钮类型数据;
  • code: 资源描述符,如果是 DATA 类型资源,格式为 resourceType:resourceId,如 books:* 表示所有书籍,books:1 表示 ID 为 1 的书籍。
  • actions: 用户被授权对该资源的操作。
{
  "totalCount": 12,
  "list": [
    {
      "code": "menu_a",
      "type": "MENU"
    },
    {
      "code": "menu_b",
      "type": "MENU"
    },
    {
      "code": "books:1",
      "type": "DATA",
      "actions": ["books:delete", "books:update"]
    }
  ]
}

¶ 批量获取自定义数据

managementClient.users().getUdfValueBatch(userIds)

批量获取多个用户的自定义数据。你需要先在用户池定义用户自定义数据元信息。

¶ 参数

  • userIds List<String> 用户 ID 列表

¶ 示例

Map result = managementClient.users().getUdfValueBatch(Arrays.asList("5f9d0cef60d09ff5a4c87c06")).execute();

¶ 示例数据

{
  "USER_ID1": {
    "school": "华中科技大学",
    "age": 20
  },
  "USER_ID2": {
    "school": "北京大学",
    "age": 21
  }
}

¶ 设置自定义数据

managementClient.users().setUdfValue(userId, data)

设置用户的自定义数据。你需要先在用户池定义用户自定义数据元信息,且传入值的类型必须和定义的类型匹配。如果设置失败,会抛出异常,你需要对异常进行捕捉。

¶ 参数

  • userId <String> 用户 ID
  • data <KeyValuePair>\ 自定义字段数据,类型为一个对象。

¶ 示例

Map<String, String> p = new HashMap();

p.put("dnum","234");

List<UserDefinedData> result = managementClient.users().setUdfValue("5f9d0cef60d09ff5a4c87c06",p).execute();

¶ 批量设置自定义数据

managementClient.users().setUdfValueBatch(input)

批量设置多个用户的自定义数据。你需要先在用户池定义用户自定义数据元信息,且传入值的类型必须和定义的类型匹配。如果设置失败,会抛出异常,你需要对异常进行捕捉。

¶ 参数

  • input <String> 输入数据,结构请见示例。

¶ 示例

Map<String, String> p = new HashMap();
p.put("dnum","189");
SetUdfValueBatchInputItem a = new SetUdfValueBatchInputItem("5f9d0cef60d09ff5a4c87c06",p);

List<UserDefinedData> result = managementClient.users().usersManagementClient.setUdfValueBatch(Arrays.asList(a)).execute();

¶ 删除自定义数据

managementClient.users().removeUdfValue(userId, key)

删除自定义数据。你需要先在用户池定义用户自定义数据元信息,且传入值的类型必须和定义的类型匹配。

¶ 参数

  • userId <String> 用户 ID
  • key <String> 自定义字段的 key 。

¶ 示例

List<UserDefinedData> result = managementClient.users().usersManagementClient.removeUdfValue("5f9d0cef60d09ff5a4c87c06","dnum").execute();

¶ 强制下线一批用户

managementClient.users().kick(userIds)

强制让一批用户在 Authing 下线

¶ 参数

  • userIds <List> 用户 ID 数组

¶ 示例

List<String> userIds = Arrays.asList("604b34ca6aa796c8b77d6c26", "604b34c44c27edbfd3d5293c");

Boolean res = this.usersManagementClient.kick(userIds).execute();

¶ 返回值

{ "code": 200, "data": true, "message": "强制下线成功" }

上一篇: 用户认证模块 下一篇: 管理角色

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

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

  • 创建用户
  • 修改用户资料
  • 获取用户详情
  • 删除用户
  • 批量删除用户
  • 批量获取用户
  • 获取用户列表
  • 检查用户是否存在
  • 查找用户
  • 搜索用户
  • 刷新用户 token
  • 获取用户分组列表
  • 加入分组
  • 退出分组
  • 获取用户角色列表
  • 添加角色
  • 移除角色
  • 获取用户所在组织机构
  • 获取用户自定义数据
  • 设置自定义数据
  • 删除自定义数据
  • 获取用户被授权的所有资源列表
  • 批量获取自定义数据
  • 设置自定义数据
  • 批量设置自定义数据
  • 删除自定义数据
  • 强制下线一批用户

用户身份管理

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

企业内部管理

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

开发者

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

公司

服务状态
176-0250-2507
xuziqiang@authing.cn
北京市海淀区中关村东路威盛大厦 6 层

京ICP备19051205号

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