Ruoyi Vue 登录功能后端代码调用流程

代码查找

浏览器查看URL请求是在http://localhost/dev-api/captchaImage

找到代码部分(ruoyi-admin中的common里面):

AjaxResult生成一个HashMap容器:

创建对象指向AjaxResult.success()返回操作成功

验证码的生成

生成验证码

  • 如果验证码类型为"math",则调用captchaProducerMathcreateText()方法生成数学验证码文本,然后将文本分割为可显示的部分(capStr)和验证码部分(code)。接着,通过captchaProducerMathcreateImage()方法生成验证码图片。
  • 如果验证码类型为"char",则调用captchaProducercreateText()方法生成字符验证码的文本,并同时将其设置给capStrcode。接着,通过captchaProducercreateImage()方法生成验证码图片。

保存验证码信息

为每个生成的验证码创建一个唯一的标识符(UUID),以及用于存储验证码信息的验证键。这些信息通常会存储在缓存中,以便在用户提交验证码时进行验证。

验证码信息存储

使用redisCache对象将验证码信息存储到缓存中。verifyKey是前面生成的唯一验证键,code是验证码的具体内容,Constants.CAPTCHA_EXPIRATION表示验证码在缓存中的过期时间,使用TimeUnit.MINUTES表示过期时间的单位是分钟。这样,后续可以通过验证键从缓存中获取相应的验证码内容进行比对。

格式转换

创建了一个FastByteArrayOutputStream对象,用于在内存中暂存验证码图片的字节数据。

使用ImageIO.write方法将生成的验证码图片image写入到os对象中,格式为JPEG("jpg")。

 返回验证码相关信息给前端

1、将生成的UUID和验证码图片的Base64编码放入ajax结果中。

2、ajax.put("uuid", uuid)将UUID放入ajax中,用于前端标识这个验证码的唯一性。

3、ajax.put("img", Base64.encode(os.toByteArray()))将验证码图片的Base64编码放入ajax中,以便前端可以直接使用该编码显示验证码图片。

登录后端

然受就返回登陆页面输入验证码之后成功登入后端

后端代码部分

映射请求

在这里用POST请求方法的路径为/login,以及使用@RequestBody注解表示将HTTP请求体中的JSON数据映射到LoginBody对象中。loginBody对象包含了登录所需的用户名、密码、验证码和验证码的UUID等信息。

生成令牌

调用loginService中的login方法,传递用户名、密码、验证码和验证码的UUID等信息,用于验证用户身份并生成访问令牌(token)。访问令牌通常用于在后续的请求中验证用户的身份,可以是JWT(JSON Web Token)等形式。

这里就是调用了login函数,将用户的各个信息以及uuid,验证码调用到login函数中,然后在login中进行验证,之后生成token令牌。以下是login部分的代码

以下是login中的调用的方法validateCaptcha

这个方法用于验证用户提交的验证码是否正确,同时会处理验证码过期和验证码错误的情况,并在这些情况下抛出相应的异常。这些异常可能在登录操作中被捕获,然后返回给前端提示用户相应的错误信息。

这是login中的recordLoginInfo方法:

用于在用户登录成功后,记录用户的登录信息,包括登录IP地址和登录日期。

用户权限的获取

令牌通过之后获取用户的权限

下图是用户数据的权限

下图是用户菜单的权限

然后找到getRoute根据用户输入的ID来查询菜单树的信息

在这里构建所需要的树结构

最后就是前端构筑菜单以及首页,就变成首页进行登录:

文章参考于:

三、若依登录功能(按钮)前、后端代码详解_若依前台_狗狸子的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值