013-若依pro(ruoyi-vue-pro)的用户体系

文章详细描述了Yudao系统中的两种用户类型(管理员和会员)及其对应的登录方式,包括账号密码、手机验证码、三方登录和注册流程,以及使用SpringSecurity进行身份验证和登出的机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两类用户

AdminUser 管理员用户,前端访问 yudao-ui-admin (opens new window)管理后台,后端访问 /admin-api/** RESTful API 接口。
MemberUser 会员用户,前端访问 yudao-ui-user (opens new window)用户 App,后端访问 /app-api/**
RESTful API 接口。

system_users 管理员用户
member_user 会员用户
system_oauth2_access_token 可以理解为汇总了关联用户, 记录user_id, 并用 user_type 区分( 对应 UserTypeEnum 的枚举)

获取当前登录的用户

在这个工具类里获取 SecurityFrameworkUtils

其实就是通过解析token获取到的, 在TokenAuthenticationFilter里会先解析好, 调用 SecurityFrameworkUtils.setLoginUser存到Spring Security里

后续获得用户就直接从 Security 的上下文获取

账号密码登录

管理后台的实现

/system/auth/login
AuthController#login
用账号和密码, 流程

  1. 看用户名是否存在
  2. 看密码是否对
  3. 看账号是否有效
  4. (看是否需要绑定社交账号)
  5. 创建token并记录日志

用户 App 的实现

/member/auth/login
AppAuthController#login
用手机和密码登录, 流程

  1. 看手机号是否存在
  2. 看密码是否对
  3. 看账号是否有效
  4. (看是否需要绑定社交账号)
  5. 创建token并记录日志

手机验证码登录

管理后台

发送验证码

/system/auth/send-sms-code
AuthController#sendSmsCode
流程

  1. 先看手机号是否存在
  2. 发送验证码
  3. 拿到system_sms_code表里手机号的最后那条发送数据
    1. 判断是否频繁发送
    2. 判断今天第几条是否超过上线
  4. 创建验证码
  5. 发送验证码
    1. 用redis的mq发送

验证码登录

/system/auth/sms-login
AuthController#smsLogin
流程

  1. 拿到手机号最后一条
  2. 判断是否超过时间
  3. 判断是否使用
  4. 更新验证码为使用
  5. 根据手机号获取用户信息
  6. 创建 Token 令牌,记录登录日志

用户 App

获取验证码

/member/auth/send-sms-code
AppAuthController#sendSmsCode
流程

  1. 考虑更新手机号和重置密码场景的判断
  2. 发送短信和上面差不多

手机登录

/member/auth/sms-login
流程

  1. 使用验证码的流程和上面差不多
  2. 用户不存在就创建, 存在就根据手机号返回
  3. 看是否需要绑定社交用户
  4. 创建 Token 令牌,记录登录日志

三方登录

/admin-api/system/auth/social-auth-redirect
获取三方平台的授权码
JustAuth 实现的

登录
用授权码登录

注册

后台

直接添加用户
/system/user/create
UserController#createUser
流程

  1. 操作租户(看不懂)
  2. 校验参数在数据库唯一性等
  3. 插入用户
  4. 插入关联岗位

app

/system/user/sms-login
登录如果没有账号会自动注册

登出

使用 Spring Security 框架,通过删除用户 Token 的方式来实现

AuthController#logout
流程

  1. header里找token
  2. 删除数据库的token和refreshToken
  3. 删除redis里的token
  4. 记录日志

AppAuthController#logout
同上

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值