平台C端用户及其登录相关表结构设计方案

在平台 C 端(求职者端),用户可以通过 APP、小程序、PC(Web) 端进行登录,支持多种方式,如:

  • 账号密码登录
  • 短信验证码登录
  • 第三方登录(微信、QQ、GitHub、Google、Apple ID)
  • 单点登录(SSO)
  • Token 机制

以下是详细的数据库表结构设计方案,包括 用户管理、登录管理、第三方授权、短信验证码、Token管理、设备信息、黑名单管理 等核心表。


1. 用户信息表(user

存储 C 端用户的基本信息,包括求职者的基本资料。

字段名类型约束说明
idBIGINTPRIMARY KEY, AUTO_INCREMENT用户ID
usernameVARCHAR(50)UNIQUE, NULL用户名(可以为空,第三方注册可能没有)
passwordVARCHAR(255)NULL加密存储的密码(第三方用户可为空)
saltVARCHAR(64)NULL密码加盐
emailVARCHAR(100)UNIQUE, NULL邮箱地址(用于邮箱注册、通知)
phoneVARCHAR(20)UNIQUE, NULL手机号(用于手机号注册、找回密码)
avatarVARCHAR(255)NULL头像 URL
genderENUM('male', 'female', 'unknown')DEFAULT 'unknown'性别
birthdayDATENULL生日
resume_urlVARCHAR(255)NULL简历存储路径
work_statusENUM('employed', 'job_seeking', 'freelancer')DEFAULT 'job_seeking'求职状态
register_sourceENUM('app', 'mini_program', 'pc', 'web')NOT NULL注册来源
statusTINYINTDEFAULT 1账户状态(1=正常,0=禁用)
created_atDATETIMEDEFAULT CURRENT_TIMESTAMP创建时间
updated_atDATETIMEDEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP更新时间

2. 用户登录日志表(user_login_log

记录 C 端用户的每次登录信息,以便进行审计、安全追踪。

字段名类型约束说明
idBIGINTPRIMARY KEY, AUTO_INCREMENT记录ID
user_idBIGINTNOT NULL关联 user.id
login_timeDATETIMEDEFAULT CURRENT_TIMESTAMP登录时间
login_ipVARCHAR(50)NOT NULL登录 IP 地址
deviceVARCHAR(100)NULL登录设备(如iPhone 14, Windows 10)
osVARCHAR(50)NULL操作系统(如 iOS, Android, Windows)
browserVARCHAR(50)NULL浏览器信息(如 Chrome, Safari)
login_methodENUM('password', 'sms', 'wechat', 'qq', 'github', 'google', 'apple', 'sso')NOT NULL登录方式
successBOOLEANDEFAULT TRUE是否成功
fail_reasonVARCHAR(255)NULL登录失败原因

3. 用户第三方登录表(user_oauth

存储用户的 微信、QQ、GitHub、Google、Apple ID 账号信息。

字段名类型约束说明
idBIGINTPRIMARY KEY, AUTO_INCREMENT记录ID
user_idBIGINTNOT NULL关联 user.id
oauth_typeENUM('wechat', 'qq', 'github', 'google', 'facebook', 'apple', 'linkedin')NOT NULL第三方平台
oauth_idVARCHAR(255)NOT NULL第三方用户唯一标识
union_idVARCHAR(255)NULL微信/QQ的UnionID(用于多应用绑定)
access_tokenVARCHAR(255)NULL访问令牌
refresh_tokenVARCHAR(255)NULL刷新令牌
expires_inINTNULL令牌过期时间(秒)
created_atDATETIMEDEFAULT CURRENT_TIMESTAMP绑定时间

4. 短信验证码表(sms_verification

用于 短信验证码登录、找回密码 等场景。

字段名类型约束说明
idBIGINTPRIMARY KEY, AUTO_INCREMENT记录ID
phoneVARCHAR(20)NOT NULL发送验证码的手机号
codeVARCHAR(6)NOT NULL短信验证码
typeENUM('login', 'register', 'reset_password', 'verify')NOT NULL验证码用途
expired_atDATETIMENOT NULL过期时间
usedBOOLEANDEFAULT FALSE是否已使用
created_atDATETIMEDEFAULT CURRENT_TIMESTAMP创建时间

5. 用户 Token 表(user_token

存储用户登录后的 JWT Token、刷新 Token

字段名类型约束说明
idBIGINTPRIMARY KEY, AUTO_INCREMENT记录ID
user_idBIGINTNOT NULL关联 user.id
tokenVARCHAR(512)NOT NULL访问 Token(如 JWT)
refresh_tokenVARCHAR(512)NULL刷新 Token
deviceVARCHAR(100)NULL登录设备信息
osVARCHAR(50)NULL操作系统
expired_atDATETIMENOT NULL过期时间
created_atDATETIMEDEFAULT CURRENT_TIMESTAMP生成时间

6. 用户设备信息表(user_device

存储用户设备信息,支持 多端登录

字段名类型约束说明
idBIGINTPRIMARY KEY, AUTO_INCREMENT设备记录ID
user_idBIGINTNOT NULL关联 user.id
device_idVARCHAR(255)NOT NULL设备唯一标识(如 UUID)
device_typeENUM('mobile', 'tablet', 'pc', 'mini_program')NOT NULL设备类型
osVARCHAR(50)NOT NULL操作系统
app_versionVARCHAR(50)NULLAPP 版本号
last_login_atDATETIMEDEFAULT CURRENT_TIMESTAMP最后登录时间

7. 用户黑名单表(user_blacklist

存储被封禁的用户。

字段名类型约束说明
idBIGINTPRIMARY KEY, AUTO_INCREMENT记录ID
user_idBIGINTNOT NULL关联 user.id
reasonVARCHAR(255)NOT NULL封禁原因
banned_atDATETIMEDEFAULT CURRENT_TIMESTAMP封禁时间
expire_atDATETIMENULL封禁到期时间

总结

这套设计方案确保了 安全性、可扩展性、多端兼容性,满足招聘平台 C 端用户的登录需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值