跳到主要内容

三、用户账号、认证方式与身份管理

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
email邮箱辅助校验,不唯一匹配
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 认证成功 ≠ 云作业准入成功
钉钉认证成功 ≠ 云作业准入成功
最终访问权限以本地数据为准
不物理删除用户,通过状态控制访问
一个账号多身份切换,权限不叠加
审计日志记录身份上下文