¶ 管理用户
Authing 管理模块。
此模块可以进行用户目录增删改查、搜索用户、刷新用户 token、管理用户分组、管理用户角色、管理用户策略授权等操作。
¶ 创建用户
managementClient.Users.Create( CreateUserInput 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> 国家
¶ 示例
var email = "test@example.com";
var password = "123456";
var user = managementClient.Users.Create(new CreateUserInput()
{
Email = email,
Password = password,
})
¶ 修改用户资料
managementClient.Users.Update(string userId, UpdateUserInput updates)
修改用户资料
¶ 参数
userId
<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> 国家
¶ 示例
var updates = new UpdateUserInput()
{
email = "***@**.com",
}
managementClient.Users.Update("userId", updates)
¶ 通过 ID 获取用户信息
managementClient.Users.Detail(string userId, bool withCustomData = false)
通过用户 ID 获取用户详情,如果你想通过 token 获取用户详情,请使用 AuthenticationClient SDK 。
¶ 参数
userId
<string> 用户 IDwithCustomData
<boolean> 是否带用户自定义数据,默认值false
¶ 示例
var user = await managementClient.Users.Detail("userId");
¶ 返回值
¶ 获取自定义数据
managementClient.Users.GetUdfValue(string userId)
获取用户的自定义数据。你需要先在用户池定义用户自定义数据元信息。
¶ 参数
userId
<string> 用户 ID
¶ 示例
managementClient.Users.GetUdfValue("USER_ID")
¶ 示例数据
{
"school": "华中科技大学",
"age": 20
}
¶ 批量获取自定义数据
managementClient.Users.GetUdfValueBatch(string[] userIds)
批量获取多个用户的自定义数据。你需要先在用户池定义用户自定义数据元信息。
¶ 参数
userIds
<List<string>> 用户 ID 列表
¶ 示例
var userIdList = ["USER_ID1","USER_ID2"]
managementClient.Users.GetUdfValueBatch(userIdList)
¶ 示例数据
{
"USER_ID1": {
"school": "华中科技大学",
"age": 20
},
"USER_ID2": {
"school": "北京大学",
"age": 21
}
}
¶ 设置自定义数据
managementClient.Users.SetUdfValue(string userId, KeyValueDictionary data)
设置用户的自定义字段,需要用户池配置了该字段之后才能设置,且传入值的类型必须和定义的类型匹配。
¶ 参数
userId
<string> 用户 IDdata
<KeyValueDictionary<string, string>> 用户自定义数据data.key
<string> 自定义字段的 Keydata.value
<string> 所设置的值,传入值的类型必须和定义的类型匹配。
¶ 示例
var p = new Dictionary<string, string>();
p.Add("dnum", "234");
List<UserDefinedData> result = managementClient.Users.SetUdfValue("5f9d0cef60d09ff5a4c87c06", p);
¶ 批量设置自定义数据
managementClient.Users.setUdfValueBatch(SetUserUdfValueBatchParam[] setUdfValueBatchInput)
批量设置多个用户的自定义数据。你需要先在用户池定义用户自定义数据元信息,且传入值的类型必须和定义的类型匹配。如果设置失败,会抛出异常,你需要对异常进行捕捉。
¶ 参数
input
<List<SetUdfValueBatchInputItem>> 输入数据,结构请见示例。
¶ Type
SetUdfValueBatchInputItem
SetUdfValueBatchInputItem.userId
<string> 用户 IDSetUdfValueBatchInputItem.data
<Dictionary<string, string>> 用户自定义属性键值对
¶ 示例
var udf = new Types.KeyValueDictionary();
udf.Add("asdad", "val1");
var udfBatch = new Domain.Model.Management.Udf.SetUserUdfValueBatchParam()
{
UserId = user.Id,
Data = udf
};
var result = await managementClient.Users.setUdfValueBatch(new Domain.Model.Management.Udf.SetUserUdfValueBatchParam[] { udfBatch }));
¶ 删除自定义数据
managementClient.Users.removeUdfValue(string userId, string key)
删除自定义数据。
¶ 参数
userId
<string> 用户 IDkey
<string> 自定义字段的 Key
¶ 示例
var result = await managementClient.Users.removeUdfValue("5f9d0cef60d09ff5a4c87c06", "dnum")
¶ 判断用户是否有某个角色
managementClient.Users.HasRole(string userId, string roleCode, string _namespace = null)
判断用户是否有某个角色
¶ 参数
userId
<string> 用户 IDroleCode
<string> 角色 Codenamespace
<string> 权限分组的 Code,详情请见使用权限分组管理权限资源。
¶ 示例
managementClient.Users.HasRole("60b4a136d9xxxxcc3d87e55a", "roleCode", "default");
¶ 示例数据
true
¶ 删除单个用户
managementClient.Users.Delete(string userId)
通过用户 ID 删除用户。删除用户会联级删除此用户管理的所有相关数据,无法恢复,请谨慎操作。
¶ 参数
userId
<string> 用户 ID
¶ 示例
var result = await managementClient.Users.Delete("userId");
¶ 批量删除用户
managementClient.Users.DeleteMany(IEnumerable<string> userIds)
批量删除用户,如果传入了不存在的用户 ID,会提示错误。
¶ 参数
userIds
<List<string>> 用户 ID 列表
¶ 示例
managementClient.Users.DeleteMany(new string[] { "userId" });
¶ 批量获取用户
managementClient.Users.Batch( IEnumerable<string> userIds,, options)
通过 id、username、email、phone、email、externalId 批量获取用户详情,一次最多支持查询 80 个用户。
¶ 参数
userIds
<List<string>> 需要查询的数据列表,如用户 ID 列表、手机号列表。
¶ 示例
- 通过用户 ID 批量查询用户
var userIdList = new List<string>() { "userId1", "userId2" };
var result = await managementClient.Users.Batch(userIdList);
¶ 获取用户列表
managementClient.Users.List(int page, int limit)
获取用户池用户列表,该接口为分页接口。
¶ 参数
page
<int> 页码数,从 1 开始,默认值:1。limit
<int> 每页包含的用户数,默认值:10。
¶ 示例
PaginatedUsers result = managementClient.Users.List(1,10);
¶ 返回值
totalCount
<int> 总数list
<List<User>> 用户列表 User。
¶ 检查用户是否存在
managementClient.Users.Exists(ExistsOption options)
通过用户名、邮箱、手机号或者 External ID 检查用户是否存在。
¶ 参数
options
<IsUserExistsParam>options.Username
<string> 用户名,区分大小写。options.Email
<string> 邮箱,邮箱不区分大小写。options.Phone
<string> 手机号options.ExternalId
<string> External ID
¶ 示例
- 通过用户名查询用户是否存在
var options = new FindUserOption()
{
UserName = "小明"
};
var B = await managementClient.Users.Exists(options);
- 通过手机号查询用户是否存在
var options = new FindUserOption()
{
Phone = "1******"
};
var B = await managementClient.Users.Exists(options);
¶ 返回值
如果用户存在,返回 `true`;如果用户不存在,返回 `false`。
¶ 查找用户
managementClient.Users.Find (FindUserOption options)
通过用户名、邮箱、手机号、External ID 精准查找用户。
¶ 参数
options
<FindUserParam>options.Username
<string> 用户名,区分大小写。options.Email
<string> 邮箱,邮箱不区分大小写。options.Phone
<string> 手机号options.ExternalId
<string> 用户外部 ID
¶ 示例
- 通过用户名查询用户
var options = new FindUserOption()
{
Username = "username"
};
var user = await managementClient.Users.Find(options);
- 通过手机号查找用户
var options = new FindUserOption()
{
Phone = "1******"
};
User user = managementClient.Users.Find(options);
¶ 搜索用户
managementClient.Users.Search( string query,SearchOption option = null)
managementClient.Users.Search(param)
根据关键字模糊搜索用户,该接口为分页接口。
¶ 参数
query
<string> 搜索内容options
<List<string>> 选项options.Fields
<List<string>> 搜索用户字段,如果不指定,默认会从username
、nickname
、email
、phone
、company
、name
、givenName
、familyName
、middleName
、profile
、preferredUsername
这些字段进行模糊搜索。 如果你需要精确查找,请使用 find 方法。options.Page
<int> 页码,默认值:1。options.Limit
<int> 每页展示条数,默认值:10。options.DepartmentOpts
<List<SearchUserGroupOpt>>options.GroupOpts
<List<SearchUserRoleOpt>>options.WithCustomData
<bool>
¶ 示例
var query = "query";
var result = managementClient.Users.Search(query);
¶ 强制下线一批用户
managementClient.Users.Kick(IEnumerable<string> userIds)
强制让一批用户在 Authing 下线
¶ 参数
userIds
<List<string>> 用户 ID 数组
¶ 示例
var userIds = new List<string>(){"604b34ca6aa796c8b77d6c26", "604b34c44c27edbfd3d5293c"}
var res = await managementClient.Users.Kick(userIds);
¶ 返回值
{ "code": 200, "data": true, "message": "强制下线成功" }
¶ 获取用户分组列表
managementClient.Users.ListGroups(string userId)
获取用户的分组列表。
¶ 参数
userId
<string> 用户 ID
¶ 示例
managementClient.Users.ListGroups("userId");
¶ 加入分组
managementClient.Users.AddGroup(string userId, string group)
将用户加入分组。
¶ 参数
userId
<string> 用户 IDgroup
<string> 分组 ID
¶ 示例
managementClient.Users.AddGroup("userId","groupId");
¶ 退出分组
managementClient.Users.RemoveGroup(string userId, string group)
退出分组
¶ 参数
userId
<string> 用户 IDgroup
<string> 分组 Code
¶ 示例
var result = await managementClient.Users.RemoveGroup("userId", "groupId")
¶ 获取用户策略列表
RolesManagementClient.Roles.ListPolicies(string code, int page = 1, int limit = 10)
获取用户策略列表
¶ 参数
code
<string> 用户 IDpage
<int> 页码limit
<int> 每页条数
¶ 示例
RolesManagementClient.Roles.ListPolicies("userId")
¶ 给用户添加策略
RolesManagementClient.Roles.AddPolicies(string code, IEnumerable<string> policies)
给用户添加策略
¶ 参数
userId
<string> 用户 IDpolicies
<List<string>> 策略集合
¶ 示例
var options = new List<string>{"604b34ca6aa796c8b77d6c26", "604b34c44c27edbfd3d5293c"}
RolesManagementClient.Roles.AddPolicies("userId", options)
¶ 批量移除用户策略
RolesManagementClient.Roles.RemovePolicies(string code,IEnumerable<string> policies)
批量移除用户策略
¶ 参数
userId
<string> 用户 IDpolicies
<IEnumerable<string>> 策略集合
¶ 示例
var policiesList = new List<string>() { "policy1", "policy2" };
RolesManagementClient.Roles.RemovePolicies("userId", policiesList);
¶ 设置当前用户的自定义数据
managementClient.Users.setUdv(string key, object value)
设置当前用户的自定义数据
¶ 参数
userId
<string> 用户 IDdata
<IEnumerable<string>> 自定义数据data.key
<string> 自定义数据的 Keydata.value
<string> 自定义数据 Value
¶ 移除用户的自定义数据
managementClient.Users.RemoveUdv(string key)
移除用户的自定义数据
¶ 参数
userId
<string> 用户 IDkey
<string> 自定义数据的 Key
¶ 示例
managementClient.Users.RemoveUdv("key")
¶ 获取用户所在组织机构列表
managementClient.Users.ListOrgs(string userId)
获取用户所在组织机构列表
¶ 参数
userId
<string> 用户 ID
¶ 示例
managementClient.Users.ListOrgs("userId");
¶ 刷新用户 token
managementClient.Users.RefreshToken(string accessToken)
刷新用户 token 刷新当前用户的 token,调用此接口要求先登录
¶ 参数
userId
<string> 用户 ID
¶ 示例
managementClient.Users.RefreshToken("accessToken")
¶ 获取用户被授权的所有资源列表
managementClient.Users.ListAuthorizedResources(string nameSpace, ResourceType? _resourceTyp)
获取一个用户被授权的所有资源,用户被授权的所有资源里面包括从角色、分组、组织机构继承的资源。
¶ 参数
namespace
<string> 权限分组的 Code,详情请见使用权限分组管理权限资源。param.resourceType
<string> 资源类型
¶ 示例
managementClient.Users.ListAuthorizedResources("roleId")
¶ 查看用户操作日志
managementClient.Users.ListUserActions(ListUserActionsParam listUserActionsParam = nul)
查看用户操作日志
¶ 参数
options
<ListUserActionsParams> 配置对象options.clientIp
<string> 客户端 IP 地址,可选值。options.operationName
<string> 操作类型,可选值。options.operatoArn
<string> 用户 Arn 通过 searchUser 方法获得,可选值。options.page
<int> 页码数,从 1 开始 默认值:1
,可选值。options.limit
<int> 每页包含的用户数 默认值:10
,可选值。
¶ 示例
var option = new ListUserActionsParam(){}
managementClient.Users.ListUserActions(option);
¶ 获取用户所在部门
managementClient.Users.listDepartment(string userId)
获取用户所在部门列表
¶ 参数
userId
<string> 用户 ID
¶ 实例
managementClient.Users.listDepartment("USER_ID");
¶ 检查用户登录状态
managementClient.Users.CheckLoginStatus(string userId, string appId = null, string devicdId = null)
检查用户登录状态
¶ 参数
appId
<string> 应用唯一标识deviceId
<string> 设备唯一标识userId
<string> 用户唯一标识
¶ 实例
managementClient.Users.CheckLoginStatus("userId");
¶ 用户登出
managementClient.Users.Logout(LogoutParam logoutParam)
用户登出
¶ 参数
param
<LogoutParam> 请求入参对象param.appId
<string> 应用唯一标识param.userId
<string> 用户唯一标识
¶ 实例
var user = managementClient.Users.Logout(new LogoutParam(){appId = "appId",userId = "userId"});
¶ 获取已归档用户列表
managementClient.Users.ListArchivedUsers( int page = 1, int limit = 10 )
获取已归档用户列表
¶ 参数
page
<int> 页码数,从 1 开始 默认值:1
。limit
<int> 每页包含的用户数 默认值:10
。
¶ 实例
var res = managementClient.Users.ListArchivedUsers(1, 10);
¶ 发送首次登录验证邮件
managementClient.Users.SendFirstLoginVerifyEmail(SendFirstLoginVerifyEmailParam option)
发送首次登录验证邮件
¶ 参数
option
<SendFirstLoginVerifyEmailParam>option.AppId
<string> 应用 IDoption.UserId
<string> 用户 ID
¶ 实例
var option = new SendFirstLoginVerifyEmailParam(){
AppId = "AppId",
UserId = "UserId"
}
var res = managementClient.Users.SendFirstLoginVerifyEmail(option);
managementClient.Users.LinkIdentity(LinkIdentityOption option)
给用户绑定一个身份
¶ 参数
option
<LinkIdentityOption>option.UserId
<string> 用户 IDoption.UserIdInIdp
<string> 用户在外部身份源的唯一标识option.IsSocial
<boolean> 是否为社会化登录类型的身份源,可以传 boolean:true 和 falseoption.Type
<string> 该条身份的类型,可以随意填写,例如 openid 表示这是一个 openid 身份,unionid 表示这是一条 unionid 身份 可选值option.Identifier
<string> 身份源标识,用于指定该身份属于哪个身份源
¶ 示例
var option = new LinkIdentityOption()
{
UserId = "UserId",
UserIdInIdp = "UserIdInIdp"
IsSocial = true
Identifier = "Identifier"
}
var result = await managementClient.Users.ListAuthorizedResources(option)
managementClient.Users.UnlinkIdentity(UnlinkIdentityOption option)
给用户绑定一个身份
¶ 参数
option
<UnlinkIdentityOption>option.UserId
<string> 用户 IDoption.IsSocial
<boolean> 是否为社会化登录类型的身份源,可以传 boolean:true 和 falseoption.Type
<string> 该条身份的类型,可以随意填写,例如 openid 表示这是一个 openid 身份,unionid 表示这是一条 unionid 身份option.Identifier
<string> 身份源标识,用于指定该身份属于哪个身份源
¶ 示例
var option = new LinkIdentityOption()
{
UserId = "UserId",
UserIdInIdp = "UserIdInIdp"
IsSocial = true
Identifier = "Identifier"
}
managementClient.Users.UnlinkIdentity(option)
¶ 批量撤销用户角色
managementClient.Users. RemoveRoles(
string userId,
IEnumerable<string> roles,
string _namespace = null
)
¶ 参数
userId
<string> 用户 IDroles
<IEnumerable<string>> 用户角色 Code 列表
¶ 示例
managementClient.Users.RemoveRoles(user.Id, new List<string>() { "test" });
¶ 获取用户所在组织机构
managementClient.Users.ListOrgs(string userId)
¶ 参数
userId
<string> 用户 ID
¶ 示例
managementClient.Users.ListOrgs("userId");
¶ 获取用户所在部门
managementClient.Users.ListDepartment(string userId)
¶ 参数
userId
<string> 用户 ID
¶ 示例
managementClient.Users.ListDepartment("userId");
¶ 获取用户被授权的所有资源
managementClient.Users.ListAuthorizedResources(
string userId,
string _namespace,
ListAuthorizedResourcesOption option = null
)
¶ 参数
userId
<string> 用户 ID_namespace
<string> 资源分组option
<ListAuthorizedResourcesOption>
¶ 示例
managementClient.Users.ListDepartment("userId","_namespace");
¶ 清除用户的自定义数据
managementClient.Users.RemoveUdfValue(string userId, string key)
¶ 参数
userId
<string> 用户 IDkey
<string>
¶ 示例
managementClient.Users.RemoveUdfValue("userId","key");
¶ 判断用户是否有某个角色
managementClient.Users.hasRole(string userId, string roleCode, string _namespace = null)
¶ 参数
userId
<string> 用户 IDroleCode
<string> 角色 Code_namespace
<string> 权限分组 ID
¶ 示例
managementClient.Users.hasRole("userId", "roleCode")
¶ 批量导入用户
managementClient.Users.CreateUsers(IEnumerable<CreateUserInput> userInfos)
¶ 参数
userInfos
<List<CreateUserInput>> 用户信息列表
¶ 示例
var userInfos = new IEnumerable<CreateUserInput>(){}
managementClient.Users.hasRole(userInfos)
¶ 获取用户所在租户
managementClient.Users.GetUserTenants(string userId)
¶ 参数
userId
<string> 用户 ID
¶ 示例
managementClient.Users.GetUserTenants("userId")