(一)图形验证码生成及邮件验证码发送

视频链接:https://www.bilibili.com/video/BV1qV4y1d7zY/?p=8&vd_source=3ed8d87d44643aa94716ad29525000fe
博文参考:实现图形验证码以及邮箱验证码

  1. 图形验证码生成主要涉及的代码:AccountController、CreateImageCode,实现的逻辑框图如下:image.png

总结及备注:

(1) @RestController*(“accountController”)* 用于声明一个控制器类,这个类中的方法默认返回的数据会直接写入到HTTP响应体中,而不是解析为视图名称,将bean注册到Spring上下文中并命名accountController。这种方式一般在需要明确指定bean名称时使用,但在大多数情况下,这不是必须的,因为Spring会默认将类名的首字母小写作为bean的名称,也就是斜体部分(“accountController”)可以删除;
(2)HTTP响应头设置时禁用了浏览器缓存,以下这三个响应头都是禁止浏览器进行缓存,避免验证码图片被缓存,其中Expires响应头为0意思是该验证码立即过期,不会被缓存;

response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);

(3)问题:怎么保证登录、注册界面的验证码图片一直存在?
这里前端每次在登录、注册以及忘记密码的界面刷新和打开时都会发送checkcode请求,所以你会看到一直都有验证码图片,(前端我不太懂,但是调试的时候,浏览器可以看到一直有这个请求)
2. 发送邮箱验证码:涉及的java文件主要有:AccountController、EmailCodeServiceImpl、EmailCodeService、EmailCodeService对应的mapper文件等,对应的实现逻辑框图如下:

image.png
实现的逻辑是:判断验证码是否相等(忽略大小写),如果相等就会向邮箱发送验证码,这里用了GlobalInterceptor注解,这个注解的作用是检查“登录、参数、是否为管理员账号”是否有效。向邮箱发送验证码又会考虑两种情况:1、如果类型type == 0,即数据库里已经有,不需要再注册,直接抛出异常;2、如果数据库不存在,即需要发送验证码进行注册,会通过sendEmailCode(String toEmail, String code)进行验证码的发送,发送完毕后,将emailCode插入数据库中
总结及备注:
这里用了重载:(1)private void sendEmailCode(String toEmail, String code)、(2)public void sendEmailCode(String toEmail, Integer type),
(1)的作用是使用邮箱发送验证码,(2)的作用是判断type(是否已经注册过了)后调用(1)发送,然后将邮箱、验证码(这里不太理解把验证码保存到数据库的原因,这个参数感觉只用一次就行了)、创建时间、状态(0表示已注册,状态置0),由于这里是让(2)调用(1),(1)全程也只在(2)里出现了一次,其实可以把(1)直接合并到(2)中,两个重名方法容易误解。

明日计划:
1、完成注册、登录

  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值