本文档涵盖了 Gitea 的用户模型架构、认证机制和账户管理。有关与外部认证源集成的说明,请参阅 认证源。有关 API 令牌和应用程序凭据的说明,请参阅 安全与授权。
User 模型是 Gitea 中的核心实体,代表个人用户和组织。它包含用户凭据、个人资料信息、权限和偏好设置。
Gitea 支持代码库中定义的各种用户类型
| 类型 | 描述 |
|---|---|
UserTypeIndividual | 普通人类用户 |
UserTypeOrganization | 具有成员的组织账户 |
UserTypeBot | 用于 CI/CD 和其他任务的自动化账户 |
UserTypeReserved* | 为防止垃圾邮件而保留的名称 |
UserTypeRemoteUser | 来自外部实例的联合用户 |
User 结构包含多个字段以存储与用户相关的信息
Gitea 的认证系统支持多种认证方法和流程。认证主要通过 routers/web/auth 包中的模块进行管理。
来源: routers/web/auth/auth.go models/user/user.go
密码使用以下方式安全存储:
密码验证过程
来源: models/user/user.go370-385 models/user/user.go383-385
Gitea 强制执行密码要求,包括:
密码验证在以下阶段进行:
来源: routers/web/auth/auth.go483-503 routers/web/user/setting/account.go54-99
来源: routers/web/auth/auth.go183-295
来源: routers/web/auth/oauth.go36-216
当用户在登录时勾选“记住我”时,Gitea 会创建一个持久化的认证令牌
auth_token 表中autoSignIn() 函数会验证此令牌来源: routers/web/auth/auth.go47-106 routers/web/auth/auth.go297-312
用户可以通过以下方式创建:
来源: models/user/user.go644-802 routers/web/auth/auth.go447-527 routers/web/admin/users.go84-213
用户可以拥有多个与账户关联的邮箱地址
邮件通知偏好
enabled:所有通知,不包括自己的操作onmention:仅在被提及disabled:无邮件通知andyourown:所有通知,包括自己的操作来源: models/user/email_address.go templates/user/settings/account.tmpl44-68
管理员拥有额外的用户管理能力
管理员编辑用户界面包含以下主要功能
来源: templates/admin/user/edit.tmpl routers/web/admin/users.go
用户模型集成了 Gitea 中的各种其他系统
这些集成对于 Gitea 作为 Git 代码仓库托管平台的功能至关重要。