三、用户账号、认证方式与身份管理
3.1 认证方式
系统支持多种认证方式,同一部署实例只启用一种:
- 学校 CAS 统一认证
- 钉钉组织认证
后台可配置当前启用的认证方式。架构上预留多认证适配能力,但不建议同一时间混用,避免同一用户产生多个账号。
认证层:Auth Provider
├── CAS Provider
└── DingTalk Provider
3.2 认证与准入分离
外部认证只负责证明身份,不代表可以访问系统。系统必须维护本地用户表,只有被导入或创建到本地用户表中的用户才允许访问。
CAS / 钉钉:负责身份认证
云作业本地用户表:负责访问准入、角色、学院、专业、课程班关系
登录流程:
用户进入登录页 → 跳转 CAS / 钉钉认证 → 外部认证成功
↓
系统根据返回的身份标识匹配本地用户表
├── 匹配成功且本地状态为 ACTIVE → 进入系统
├── 匹配成功但本地状态不是 ACTIVE → 拒绝访问,"当前账号已停用或未开通云作业权限"
└── 匹配失败 → 拒绝访问,"当前账号未开通云作业权限"
3.3 用户来源
学生和教师信息由管理员或教学秘书导入,不依赖认证系统自动生成。
学生字段:姓名、学号、学院、专业、年级、行政班、用户状态
教师字段:姓名、工号、邮箱、学院、系/教研室、用户状态
教学秘书:由管理员创建,配置管理范围
原则:
- 用户业务信息以后台导入为准,外部认证信息仅用于登录匹配,外部返回姓名与本地不一致时不自动覆盖
- 学生主数据导入后默认状态为
ACTIVE - 学生导入后立即成为本地准入用户;外部 CAS / 钉钉认证匹配学号后即可登录
- 学号是学生唯一业务匹配字段,外部认证信息不作为学生导入主匹配依据
- 学生被删除进入回收站后,本地准入关闭;CAS / 钉钉认证成功也不得进入系统,恢复必须由管理员从回收站操作
3.4 用户表关键字段
User
id
name
userNo 学号 / 工号(教学业务主身份)
email
phone
userType STUDENT / TEACHER / STAFF
status ACTIVE / INACTIVE / GRADUATED / LEFT
authProvider CAS / DINGTALK
casAccount
casZgh
casThId
dingtalkUnionId
dingtalkUserId
匹配规则:CAS 优先用 zgh 匹配 userNo,钉钉优先用 userId/unionId 匹配绑定字段。
3.5 CAS 统一认证
CAS 登录:跳转 CAS 页面 → 用户认证 → CAS 带 ticket 回调 → 后端验证 ticket → 获取用户信息 → 匹配本地用户表
CAS 字段对应:
| CAS 字段 | 说明 | 云作业处理 |
|---|---|---|
| account | 账号 | 绑定字段 |
| zgh | 教工号/学工号 | 优先匹配 userNo |
| 邮箱 | 辅助校验,不唯一匹配 | |
| th_id | 教务教师编号 | 教师辅助字段 |
| xm | 姓名 | 显示校验,不自动匹配 |
登出:先清除本地 session → 再跳转 CAS logout
3.6 钉钉免登
流程:钉钉工作台打开 H5 → 获取 code → 后端换取用户信息 → 获取 userId/unionId → 匹配本地 User 表
绑定方式:
- 管理员预绑定:导入用户时同时填写钉钉 userId/unionId(推荐)
- 首次登录绑定:根据手机号/邮箱/工号匹配唯一用户后绑定(需后台配置开启)
原则:钉钉 userId 不作为学号/工号使用,钉钉通讯录不作为教学数据源
3.7 用户状态与生命周期
| 状态 | 说明 |
|---|---|
| ACTIVE | 正常 |
| INACTIVE | 停用 |
| GRADUATED | 已毕业 |
| LEFT | 已离职 |
学生毕业:不删除账号,保留历史数据。毕业后只能只读查看历史课程和历史作品,不允许提交、修改、删除、调整作品公开状态、加入新课程班或发起新的业务操作。
教师离职:不删除账号,保留历史记录,自动从候选教师隐藏,如有进行中课程班教学秘书需指定接替教师(历史评分人、命题人、审核人不改写)
学生转专业:可更新当前专业,历史课程班记录不回写,课程班学生关系保存加入时的快照信息(姓名、学号、学院、专业、行政班)
3.8 多身份用户
同一用户可拥有多个身份(如教师+教学秘书),采用:一个账号 + 多身份 + 当前身份上下文
- 登录后默认进入上次使用的身份,或多个身份时进入选择页
- 右上角提供身份切换入口
- 切换身份后:首页、菜单、待办、数据范围、操作按钮随之变化
- 权限不叠加,当前身份对应什么权限就用什么权限
3.9 审计日志
多身份用户操作时,审计日志记录:操作人 ID、姓名、当前使用身份、操作对象、操作类型、操作时间、操作结果、操作前后数据。确保同一用户多个身份时能明确是以哪个身份执行操作。
审计日志查看权限:
- 系统管理员可查看全校审计日志。
- 学院管理员可查看本学院审计日志。
- 教学秘书可查看自己管理范围内的审计日志。
- 其他角色默认不可查看审计日志。
关键操作审计范围:
- 导入、导入回退、权限变更、学生移出课程班、用户停用或恢复
- 课程班工作截止时间单独延期
- 作业发布、撤回、修改,尤其是已发布作业的关键字段修改
- 作品举报提交、分派、核查、处理和展示状态调整
- 获奖成果申报、学分奖金统一申报、网页承诺书签署、初审、公示、举报、导出和撤回
- 补交授权、评分改分、成绩导出、成绩快照生成
- 归档、解档、再次归档、归档后导出
- 毕业设计名单导入、导师匹配、变更审批、终止说明、归档和导出
审计记录应支持后续按课程班、作业、学生、导入版本、归档记录、毕业设计项目等维度查询。
3.10 核心原则
认证方式:CAS / 钉钉二选一
准入规则:认证成功 ≠ 准入成功,必须匹配本地已导入用户
用户来源:后台导入为准
校外人员:当前不允许
CAS 认证成功 ≠ 云作业准入成功
钉钉认证成功 ≠ 云作业准入成功
最终访问权限以本地数据为准
不物理删除用户,通过状态控制访问
一个账号多身份切换,权限不叠加
审计日志记录身份上下文