【Easy云盘 | 第二天】注册AOP切面完成参数校验

目录

前言:

今日完结任务:

1.完成了注册接口 

创建AOP切面: 

第一步:

第二步:

2.完成了登录接口:

杂项知识点:

总结:


前言:

        本项目非原创,我也只是作为一名初学者跟着成熟的up主一起敲代码而已。视频来源于:

Springboot项目实战 easypan 仿百度网盘 计算机毕业设计 简历项目 项目经验(后端)_哔哩哔哩_bilibiliSpringboot项目实战 easypan 仿百度网盘 计算机毕业设计 简历项目 项目经验(后端)共计28条视频,包括:项目简介、项目架构、环境配置等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV1qV4y1d7zY

      在哔哩哔哩闲逛看到这个项目,感觉还不错,于是想要学习一下这个项目怎么写。项目日记也会同步更新。(本人不分享本项目源码,支持项目付费) 

本项目大量采用了先前项目中已经写好的代码,而且UP主讲的也很快。因此不适合新手作为自己的第一个项目。 

今日完结任务:

1.完成了注册接口 

        再讲整个业务逻辑之前,我们要先引入一下AOP。在这个接口中我们用到了AOP。原因是因为:在用户登录这块,有大量的参数需要做非空校验以及其他校验,因此我们就顺势去做一个切面。

核心思路为:通过注解的方式标记方法,利用AOP思想创建一个切面,在切面中实现对标记方式中字段的填充,然后再运行原方法。这样就实现了在不改动原方法的前提下,实现了对代码的优化升级。 

创建AOP切面: 

第一步:

创建注解GlobalInerceptor来标识需要对哪些方法进行拦截参数校验

 创建注解VerifyParam来标识需要对哪些参数进行校验以及校验什么内容

第二步:

开始写切面,完成切入点表达式来精准拦截方法,这里写了很多校验代码,我就不一一贴出来了。

讲完了这个AOP之后,我们再回到业务层,看一看注册接口:

业务逻辑: 

Controller层先对传入的图片验证码进行了校验,通过之后再进入注册界面。需要注意的是:无论本次注册是否成功,这次用到的验证码都应该废弃,所以我们try finally语句。在finally部分使用session的removeAttribute方法来删除掉会话中的验证码。

接下来让我们看一看servel层的具体实现:

这里先使用select查询当前邮箱是否已经被注册过。之后校验邮箱验证码,校验成功之后生成userInfo对象写入用户表中。需要注意的是我们不明文存储用户密码,而是存储MD5加密后的密码。在比较的时候,我们也是用用户输入的密码的MD5加密字符与数据库中用户真正密码的MD5加密字符进行对比

2.完成了登录接口:

登录接口的Controller层还是和注册接口一样:判断验证码是否正确并且销毁验证吗,最后进入severl层执行真正逻辑

所以我们现在转到Server层来看一看业务逻辑:

 整个登录就接口一共就五个板块:

  1. 校验用户密码和用户状态
  2. 更新用户最后一次登录时间
  3. 将当前用户状态写入session
  4. 判断当前用户是否为管理员
  5. 更新当前用户已经使用内存的空间

这里在比较密码的时候,直接就用传递到后端的密码和数据库中MD5加密后的字符串 。这是因为我们的密码在前端就已经进行MD5加密了,发送的并不是明文密码,而是MD5加密。

杂项知识点:

今天记录一下之前一直没有看懂的一个类:

配置中心类,主要存储发送验证码邮件的模板 以及 个人网盘的各种配置,比如已经使用空间大小。

之前一直错误(shabi)以为这是一个写入Redis的类,也不知道咋想的,哎,因为这个小问题导致我写项目一直难受,服了。

感觉今天的收获就是:看代码已经不能急躁,不能先入为主。不然很容易造成错误,今天算是亲自领略到了。要沉下心来仔细看一看代码,不要急躁,不要急躁!

总结:

今天还不错,学到了很多。最大的领悟就是:看代码的时候不要急躁,不要急躁,不要急躁,不要急躁!

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我是一盘牛肉

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值