字节跳动青训营tiktok_e-commence项目的认证中心与用户服务MySql数据库表设计
注意:
小编并未采用go语言设计,而是传统的java语言设计,根据springboot+springCloude方案以下是本项目要求
技术选型
此要求可以选择Spring Security框架是一个强大的安全框架,它提供了身份验证、授权、防止攻击等多种功能。
数据库设计
1.添加OAuth 相关的数据库表
- oauth_client_details: 存储客户端详细信息,包括客户端 ID、密钥、重定向 URI、权限范围等。
- oauth_access_token: 存储访问令牌的信息,包括令牌 ID、令牌值、认证信息、用户名、客户端 ID、刷新令牌等。
- oauth_code: 存储授权代码的信息,包括代码本身及相关的认证信息。
- oauth_refresh_token: 存储刷新令牌的信息,包括令牌 ID、令牌值及认证信息。
- oauth_client_token: 类似于 oauth_access_token,但专门用于客户端令牌。
- oauth_approvals: 存储用户的授权批准信息,包括用户 ID、客户端 ID、权限范围、状态、过期时间等。
3.用户表和认证授权表
user:用户表,存储了系统用户信息,用户类型包括:会员、普通群众等,商家、管理员等
role:角色表,存储了系统的角色信息,会员、普通群众等,商家、管理员等
user_role:用户角色表,一个用户可拥有多个角色,一个角色可被多个用户所拥有
menu:模块表,记录了菜单及菜单下的权限
permission:角色权限表,一个角色可拥有多个权限,一个权限可被多个角色所拥有。
设计理由
优点
- 1.基于RABC的资源访问设计,好处是扩展性比较强,灵活,基于资源的访问控制和授权。
- 2.使用Spring Security这个框架比较全面,可扩展性强
- 3.这五张表,分开设计,几乎涵盖了所有的需求功能。
- 缺点
- 1.Spring Security对于新手来说不那么容易理解,学习曲线相对较陡峭,对于小型项目来说,如果只是简单的认证和授权需求,有点大才小用。
-
- Spring Security 的性能通常是可以接受的,但在某些情况下,特别是高并发场景下,可能会有一定的性能开销。
- 3.实现实现jwt令牌校验的话,需要配合网关使用。
补充
这五张表,环环相扣,如果觉得麻烦设计的话,可以自行设计减少表的数量。