数字人民币教学仿真后端
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
chenyuan 2bb4818a8b docs: add current user context design 4 weeks ago
docs docs: add current user context design 4 weeks ago
src feat: add dev database profile without flyway 4 weeks ago
.gitignore chore: ignore local worktrees 4 weeks ago
README.md feat: add dev database profile without flyway 4 weeks ago
pom.xml feat: add dev database profile without flyway 4 weeks ago

README.md

数字人民币教学仿真后端

开发规范与模块目录约定见 开发规范

运行环境

  • JDK 8已按 Temurin 8 验证)
  • Spring Boot 2.7.18、Spring Security 5.7、MyBatis-Plus 3.5.17、Springdoc 1.8.0
  • MySQL 8

登录方式

  • 主平台单点登录:主平台跳转至 GET /api/v1/auth/sso?token=...。后端以主平台教师或学生档案的 add_time 动态 HMAC 密钥验证 Token生成一次性 code 并跳转至前端回调地址。
  • 独立访问:浏览器访问 GET /api/v1/auth/cas/login,跳转学校 CAS回调校验成功后生成同样的一次性 code
  • 本地账号密码:POST /api/v1/auth/login 仅校验本系统保存的 BCrypt 密码哈希。schema.sql 内置学生账号 tzs001SSO/CAS 仅同步身份与角色,不读取主平台密码。
  • 会话兑换:POST /api/v1/auth/session/exchange,请求体为 {"code":"..."},返回本系统访问 JWT 和刷新令牌。

本系统只接受教师和学生两类身份。平台账号与角色只能通过内部投影写入;没有用户、角色或用户角色的管理接口。

必需配置

生产环境通过环境变量配置:

变量 说明
DIGITAL_RMB_DB_URL 本系统 MySQL JDBC 地址
DIGITAL_RMB_DB_USERNAME 本系统数据库账号
DIGITAL_RMB_DB_PASSWORD 本系统数据库密码
DIGITAL_RMB_JWT_SECRET 至少 64 字符的应用 JWT 密钥
DIGITAL_RMB_PLATFORM_DB_URL 主平台 MySQL JDBC 地址
DIGITAL_RMB_PLATFORM_DB_USERNAME 主平台只读数据库账号
DIGITAL_RMB_PLATFORM_DB_PASSWORD 主平台只读数据库密码
DIGITAL_RMB_CAS_LOGIN_URL 学校 CAS 登录地址
DIGITAL_RMB_CAS_VALIDATE_URL CAS serviceValidate 地址
DIGITAL_RMB_CAS_CALLBACK_URL 本系统固定 CAS 回调地址
DIGITAL_RMB_FRONTEND_CALLBACK_URL 前端接收一次性 code 的固定回调地址

主平台数据库账号必须仅授予 SELECT 权限。不要将主平台 Token 写入日志、数据库或前端最终 URL。

本地运行

mvn spring-boot:run -Dspring-boot.run.profiles=local -Dspring-boot.run.arguments=--server.port=8081

本地 Swaggerhttp://localhost:8081/swagger-ui/index.html

应用启动时会执行幂等的 schema.sql,创建缺失表并创建或更新 tzs001(平台用户 ID 487STUDENT)。脚本只保存 BCrypt 哈希,不含密码明文。开发环境可使用 dev 配置连接测试库:mvn spring-boot:run -Dspring-boot.run.profiles=dev。新 SSO/CAS 用户会获得随机 BCrypt 密码;如需为其开通本地密码登录,必须通过后续受控的本地账号初始化流程完成。