概述
用户属性
Casdoor 管理用户账户。 每个用户都具有以下属性:
Owner:拥有用户的组织- ``名称:用户的唯一用户名(在组织内必须唯一)
创建时间: 用户账户创建时的时间戳更新时间: 用户账户上次更新时的时间戳Id:每个用户的唯一标识符(UUID)类型:用户账户的类型(例如,普通用户、访客用户)密码: 用户的加密密码密码盐: 用于密码哈希的盐值PasswordOptions:密码复杂性选项DisplayName:用户界面中显示的用户显示名称FirstName:用户的名(名字)LastName: 用户的姓氏(家庭姓名)Avatar: 用户当前头像图片的URL或链接永久头像:用户永久存储的头像的 URL(不受提供商变更影响)电子邮件:用户的电子邮件地址(自动转换为小写)电话: 用户的电话号码位置: 用户的地理位置地址:包含用户地址信息的字符串数组(例如,街道地址、城市、州/省、邮政编码)所属单位: 用户的组织或机构隶属关系职称: 用户的专业职称或工作岗位身份证类型:用于身份验证的身份证类型(例如,护照、驾驶证)身份证:身份证号码(验证后变为只读)真实姓名:用户的已验证真实姓名(身份验证后变为只读)IsVerified:指示 用户是否已通过身份验证提供商完成身份验证主页:指向用户个人主页或网站的URL简介: 用户的简短传记或描述标签: 用于对用户进行分类的标签(可为多个标签,用逗号分隔)区域:用户的地理区域或地区语言:用户首选的界面语言性别:用户的性别生日: 用户的出生日期教育: 用户的教育水平或背景余额:用户的账户余额(适用于具有支付功能的应用程序)分数:与用户关联的数值评分(由应用程序定义)积分:用户的积分或声誉点数排名:用户的排名位置(由应用程序定义)IsDefaultAvatar: 表示用户是否使用默认头像IsOnline: 表示用户当前是否在线IsAdmin:表示用户是否为其组织的管理员IsGlobalAdmin:表示用户是否拥有管理Casdoor的权限IsForbidden:表示用户账户是否已被禁止或受限IsDeleted:当用户被软删除时(IsDeleted = true),他们无法通过任何身份验证方法登录,包括 OAuth 提供商。 这可防止已删除的用户通过第三方登录重新注册。- ``SignupApplication:用户注册所使用的应用程序
哈希:用于内部身份验证机制的哈希值预哈希:前一个哈希值(用于密码迁移期间)CreatedIp:创建用户账户时所用的IP地址上次登录时间:用户上次登录的时间戳上次登录IP:用户上次登录时的IP地址权限:用户的权限数组(扩展字段,通过用户 API 只读)权限:用户的权限数组(扩展字段,通过用户 API 只读)OriginalRefreshToken:最近一次社交登录的刷新令牌(旧版单提供商字段,为向后兼容而保留)。 在 API 响应中显示为***。Properties["oauth_<ProviderType>_accessToken"]/Properties["oauth_<ProviderType>_refreshToken"]: 按提供程序存储的 OAuth 令牌,位于Properties映射中。 当用户通过多个 OAuth 提供商登录时,每个提供商的令牌会各自存储在独立的密钥下(例如:oauth_GitHub_accessToken). 这两个字段在API响应中均被屏蔽为***。地址:结构化地址条目的列表。 每个地址都包含标签(家庭、工作、其他)、第一行, 第二行, 城市, 州, 邮政编码,以及地区. 用户可从账户个人资料页面管理他们的地址
社交平台登录的唯一ID:
- ``Github:用户通过GitHub OAuth登录获得的唯一标识符
Google:来自Google OAuth登录的用户唯一标识符QQ:来自QQ OAuth登录的用户唯一标识符微信:用户通过微信OAuth登录获得的唯一标识符Facebook:用户通过FacebookOAuth登录获得的唯一标识符钉钉:用户通过钉钉OAuth登录获得的唯一标识符微博:用户通过微博OAuth登录获得的唯一标识符Gitee:来自Gitee OAuth登录的用户唯一标识符LinkedIn:来自LinkedIn OAuth登录的用户唯一标识符企业微信:用户通过企业微信OAuth登录获得的唯一标识符飞书:用户通过飞书OAuth登录获得的唯一标识符Gitlab:来自GitLab OAuth登录的用户唯一标识符Adfs:来自ADFS认证的用户唯一标识符百度:用户从百度OAuth登录获取的唯一标识符Casdoor:用户从其他Casdoor实例OAuth登录获取的唯一标识符Infoflow:用户通过Infoflow OAuth登录获得的唯一标识符Apple:用户通过Apple OAuth登录获得的唯一标识符Azure AD:来自Azure Active Directory OAuth登录的用户唯一标识符Azure AD B2C:来自Azure AD B2C OAuth登录的用户唯一标识符Slack:来自Slack OAuth登录的用户唯一标识符Steam:来自Steam OAuth登录的用户唯一标识符Ldap:来自LDAP认证的用户唯一标识符Telegram:来自Telegram OAuth登录的用户唯一标识符
组织管理员权限
已启用``IsAdmin的用户是其组织的管理员:
- 可完全访问并管理其组织内的用户、应用程序和资源
- 访问发送给组织内用户的验证码记录
- 能够配置组织级设置和策略
组织管理员拥有提升的权限,但权限范围仅限于其所属组织。 全局管理员(内置组织用户)在Casdoor实例的所有组织中拥有完全访问权限。
用户标签
标签字段用于对用户进行分类。 使用单个标签或用逗号分隔的多个标签(例如:"developer,qa,reviewer"). 应用程序访问检查会单独评估每个标签。
保留的标签值:
normal-user: 具有完整身份验证功能的标准用户guest-user:通过访客身份验证创建的临时用户,无需初始凭据- 当用户设置正确的用户名或密码时,自动升级为
普通用户 - 在他们升级账户之前,无法直接登录
- 当用户设置正确的用户名或密码时,自动升级为
自定义标签可限制应用访问。 查看应用标签.
身份验证
Casdoor支持通过身份验证提供商进行身份验证。 用户可通过提交身份证信息和真实姓名来验证身份,这些信息将通过Jumio等第三方服务进行验证。
当用户完成身份验证时:
- 将
IsVerified</code>字段设置为true - RealName,IdCardTypeIdCard及相关身份字段变为只读
- 验证状态包含在JWT令牌和OIDC userinfo响应中
- 用户个人资料上会显示验证 徽章
此功能适用于需要遵守KYC(了解您的客户)合规要求或需确保用户身份真实性的应用。 请参阅身份验证提供商以了解有关配置身份验证的更多信息。
电子邮件规范化
Casdoor会将所有电子邮件地址统一转换为小写,以确保唯一性并避免重复账户。 这意味着user@example.com、User@Example.com和USER@EXAMPLE.COM被视为相同的电子邮件地址,符合RFC 5321标准。
此规范化操作会在以下过程中自动进行:
- 用户注册与账户创建
- 用户登录与身份验证
- 电子邮件重复性检查
Partial updates with the columns parameter
/api/update-user accepts an optional columns query parameter to perform a partial update: only the listed fields are written, and every other field on the user is left untouched. Omit it (or leave it empty) to update the full user object.
Field names in columns may be written in either camelCase or snake_case — both are accepted and map to the same underlying column. For example, columns=displayName,avatar and columns=display_name,avatar are equivalent.
角色与权限(扩展字段)
用户对象上的角色和权限字段已扩展:这些字段在获取用户数据时填充,而非存储在用户表中。 它们是通过ExtendUserWithRolesAndPermissions()从角色和权限资源构建的。
重要提示:您无法通过/api/update-user更改角色或权限(包括通过columns参数)。 使用角色和权限API 及其管理页面(例如,侧栏中的角色和权限)来分配和管理它们。
使用属性字段
属性字段是一个键值映射(map[string]string),用于存储内置模式未涵盖的自定义用户属性。 :用于:
- 存储组织特定的用户属性
- 添加不适合标准字段的自定义元数据
- 在不修改核心模式的情况下扩展用户简档
从XLSX导入用户
通过上传XLSX文件来添加或更新用户。
入门
在管理控制台的用户页面上,您将看到:
- 下载模板:生成包含所有可用用户字段及其本地化列标题的XLSX模板
- 上传 (.xlsx):打开上传对话框,以从您的 XLSX 文件导入用户

模板文件包含以下格式的标题显示名称#字段名称(例如:组织#所有者),其中显示名称已本地化为您的语言,而“#”后的字段名称则用于导入映射。 导入时会自动移除注释前缀(即#之前的所有内容)。
上传流程
选择XLSX文件后,Casdoor会显示数据的预览。 请审阅并确认以开始导入。 A示例文件 (xlsx/user_test.xlsx) 包含5个测试用户,可供参考。

上传权限
谁可以上传取决于您的角色:
- 全局管理员(在内置组织中,IsGlobalAdmin 设置为 true 的用户)可将用户上传到任何组织。 目标组织由 XLSX 文件中的``所有者字段确定。
- 组织管理员(已将
IsAdmin设置为 true 的用户)只能向其所属的组织上传用户。 系统确保重复检查和用户创建的作用域限定在正确的组织内。
导入时绕过密码加密
在将用户从其他系统迁移时,您可能需要保留现有的密码哈希值,而不是使用组织的默认密码类型重新哈希。 在用户导入过程中,使用passwordType字段,以告知Casdoor存储密码的格式。
:::注意 示例:bcrypt密码 示例 POST 正文用于/api/add-user:
{
"owner": "组织",
"signupApplication": "first-app",
"email":"dev@dev.com",
"name": "dev",
"displayName": "开发者",
"password": "$2a$10$.o/iVyDE9Xk8ioywHDnQRu72RviOi6FPa1ujhusbSCZeg7VOa6MY6",
"passwordType":"bcrypt",
}
密码已使用bcrypt哈希,因此passwordType</code>设置为"bcrypt",以防止Casdoor再次哈希。
:::