若依框架学习笔记【大致逻辑】

登录

1.生成验证码

后端生成一个表达式,1+1=2,格式1+1=?@2

同时使用uuid生成一个key值,传入前端的隐藏域中,方便后期登录再到Redis中通过key值读取答案进行比对

进行截取题干转成图片,传到前端进行展示

答案存入Redis【中间会去设置存储的有效期等】

Vue获取验证码图片是请求前端,通过反向代理去映射到后端解决跨域问题

2. 登录的实现【在Action里面请求,并进行异步封装】

  1. 验证码校验
    1. 进行key拼接uuid,根据uuid查redis,再删除key,进行验证码失效和错误判断,并异步记录日志,抛出异常到异常处理类中
  2. 用户名以及密码校验
    1. 使用spring security在里面使用雪花算法对数据库里的密码进行解密,进行用户名密码校验并进行异常捕获
    2. 一种是用户名或密码错误,异步记录日志并抛出用户名密码异常
    3. 其他错误则异步记录日志并抛出业务层异常
    4. 登录成功这异步记录操作日志并根据用户id去更新用户信息,记录用户最近登录信息【包括登陆地址和一些日期】
  3. 生成token
    1. 获取uuid,并存入用户里面,再去获取浏览器,ip,操作系统等信息存入到用户信息里面
    2. 设置登录时间和有效期,一般是30分钟,并把登录的用户信息给存入到redis里面
    3. 使用JWT生成token
  4. 把从后端获取到的token存入到cookie中

使用异步任务管理器,结合线程池,实现异步的操作日志记录,和雨雾逻辑实现异步解耦合。

3.获取用户信息【角色信息和权限信息】(全局路由守卫里面)

获取当前用户的角色信息和权限信息,并存入Vuex中

  1. 前端里面把请求封装在promiseions里面,给他请求到user里面,再请求到login里面访问到后端controller
  2. 后端控制层里面则获取角色信息集合和权限信息集合
  3. 查表用户角色的多对多表【中间表】
  4. 前端获取到后端返回的信息找到角色则记录角色信息和权限信息【前端权限存储到Vuex中(全局存储)】

4.获取动态路由

根据当前用户权限获取动态路由

  • 获取用户id,根据id去查找菜单权限表,生成动态路由
    • 根据父id去生成集合,并且看他的children看菜单级数【数据库设计层面】
    • menu_id去看父级节点【数据库设计层面】
    • 去遍历递归,先把一级菜单给他找到再去递归找到其他的
    • 再去根据父id找子菜单
posted @ 2023-03-11 15:15  筝弈  阅读(457)  评论(0编辑  收藏  举报
2 3
4