- 开发集成
- /
- Java / Kotlin
- /
- 管理模块
- /
- 管理用户
¶ 管理用户
Authing 管理模块。
此模块可以进行用户目录增删改查、搜索用户、刷新用户 token、管理用户分组、管理用户角色、管理用户策略授权等操作。
¶ 创建用户
UsersManagementClient().create(userInfo)
此接口将以管理员身份创建用户,不需要进行手机号验证码检验等安全检测。
¶ 参数
userInfo
<CreateUserInput> 用户资料userInfo.email
<string> 邮箱,用户池内唯一userInfo.emailVerified
<boolean> 邮箱是否已验证userInfo.phone
<string> 手机号userInfo.phoneVerified
<boolean> 手机号是否验证userInfo.unionid
<string> 以社会化登录的用户该字段为用户在第三方社会化登录服务商中的唯一 IDuserInfo.openid
<string> 微信登录返回的 openiduserInfo.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> 用户最近一次登录(或其他活动)的 IPuserInfo.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> 最近登录的 IPuserInfo.name
<string> NameuserInfo.givenName
<string> Given NameuserInfo.familyName
<string> Family NameuserInfo.middleName
<string> Middle NameuserInfo.profile
<string> Profile UrluserInfo.preferredUsername
<string> Preferred NameuserInfo.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> 用户 IDupdates
<UpdateUserInput> 修改的用户资料updates.email
<string> 邮箱updates.emailVerified
<boolean> 邮箱是否已验证updates.phone
<string> 手机号updates.phoneVerified
<boolean> 手机号是否验证updates.unionid
<string> 以社会化登录的用户该字段为用户在第三方社会化登录服务商中的唯一 IDupdates.openid
<string> 微信登录返回的 openidupdates.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> 用户最近一次登录(或其他活动)的 IPupdates.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> 最近登录的 IPupdates.name
<string> Nameupdates.givenName
<string> Given Nameupdates.familyName
<string> Family Nameupdates.middleName
<string> Middle Nameupdates.profile
<string> Profile Urlupdates.preferredUsername
<string> Preferred Nameupdates.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> 用户 IDgroup
<string> 分组 code
¶ 示例
managementClient.users().addGroup("userId", "groupId").execute();
¶ 退出分组
UsersManagementClient().removeGroup(userId, group)
退出分组
¶ 参数
userId
<string> 用户 IDgroup
<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> 用户 IDroles
<string> 角色 code 列表
¶ 示例
ArrayList<String> roles = new ArrayList<>();
roles.add("role code");
managementClient.users().addRoles("userId", roles);
¶ 移除角色
UsersManagementClient().removeRoles(userId, roles)
将用户从角色中移除
¶ 参数
userId
<string> 用户 IDroles
<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> 用户 IDdata
<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> 用户 IDkey
<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 联系我们。