目录
前言:
本项目非原创,我也只是作为一名初学者跟着成熟的up主一起敲代码而已。视频来源于:
在哔哩哔哩闲逛看到这个项目,感觉还不错,于是想要学习一下这个项目怎么写。项目日记也会同步更新。(本人不分享本项目源码,支持项目付费)
本项目大量采用了先前项目中已经写好的代码,而且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层来看一看业务逻辑:
整个登录就接口一共就五个板块:
- 校验用户密码和用户状态
- 更新用户最后一次登录时间
- 将当前用户状态写入session
- 判断当前用户是否为管理员
- 更新当前用户已经使用内存的空间
这里在比较密码的时候,直接就用传递到后端的密码和数据库中MD5加密后的字符串 。这是因为我们的密码在前端就已经进行MD5加密了,发送的并不是明文密码,而是MD5加密。
杂项知识点:
今天记录一下之前一直没有看懂的一个类:
配置中心类,主要存储发送验证码邮件的模板 以及 个人网盘的各种配置,比如已经使用空间大小。
之前一直错误(shabi)以为这是一个写入Redis的类,也不知道咋想的,哎,因为这个小问题导致我写项目一直难受,服了。
感觉今天的收获就是:看代码已经不能急躁,不能先入为主。不然很容易造成错误,今天算是亲自领略到了。要沉下心来仔细看一看代码,不要急躁,不要急躁!
总结:
今天还不错,学到了很多。最大的领悟就是:看代码的时候不要急躁,不要急躁,不要急躁,不要急躁!
如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!