架构师-3.用户体系

本文介绍了系统中两种用户类型:AdminUser和MemberUser的管理,包括前后端访问、RESTful API接口、Token认证机制。用户信息分别存储在不同的数据库表中,通过user_type字段进行区分。登录方式包括账号密码、手机验证码以及第三方登录,详细阐述了各种登录实现的接口和流程。同时,文章提及用户注册和登出功能的实现。
摘要由CSDN通过智能技术生成

系统提供了 2 种类型的用户,分别满足对应的管理后台、用户 App 场景。

1.AdminUser 管理员用户,前端访问 s-ui-admin-vue3管理后台,后端访问 /admin-api/** RESTful API 接口。
2.MemberUser 会员用户,前端访问 s-ui-user用户 App,后端访问 /app-api/** RESTful API 接口。
虽然是不同类型的用户,他们访问 RESTful API 接口时,都通过 Token 认证机制,具体可见 《开发指南 —— 功能权限》。

1. 表结构
2 种类型的时候,采用不同数据库的表进行存储,管理员用户对应 system_users 表,会员用户对应 member_user 表。如下图所示:

为什么不使用统一的用户表?

确实可以采用这样的方案,新增 type 字段区分用户类型。不同用户类型的信息字段,例如说上图的 dept_idpost_ids 等等,可以增加拓展表,或者就干脆“冗余”在用户表中。

不过实际项目中,不同类型的用户往往是不同的团队维护,并且这也是绝大多团队的实践,所以我们采用了多个用户表的方案。

如果表需要关联多种类型的用户,例如说上述的 system_oauth2_access_token 访问令牌表,可以通过 user_type 字段进行区分。并且 user_type 对应 UserTypeEnum 全局枚举,代码如下:

2. 如何获取当前登录的用户?
使用 SecurityFrameworkUtils 提供的如下方法,可以获得当前登录用户的信息:

/**
 * 【最常用】获得当前用户的编号,从上下文中
 *
 * @return 用户编号
 */
@Nullable
public static Long getLoginUserId() { /** 省略实现 */ }

/**
 * 获取当前用户
 *
 * @return 当前用户
 */
@Nullable
public static LoginUser getLoginUser() { /** 省略实现 */ }

/**
 * 获得当前用户的角色编号数组
 *
 * @return 角色编号数组
 */
@Nullable
public static Set<Long> getLoginUserRoleIds() { /** 省略实现 */ }

    3. 账号密码登录
3.1 管理后台的实现
使用 username 账号 + password 密码进行登录,由 AuthController 提供 /admin-api/system/auth/login 接口。代码如下:

@PostMapping("/login")
@Operation(summary = "使用账号密码登录&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杭州架构师

你的鼓励你创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值