目录
1.QQ开启服务
2.java中配置
2.1.导入依赖
2.2.yml配置
2.2.1 mail配置
2.2.2 redis配置(与mail同级,在spring下一级)
2.3.conroller层
2.3.1 在controller类上加上
2.3.2 生成验证码方法
2.3.3发送邮件接口
2.3.4 用户登录接口(整合)
3.apifaox测试功能
3.1 idea直接导出接口到apifox
3.1.1 下载插件
3.1.2 来到apifox生成令牌
3.1.3 来到idea设置里面进行相关配置
3.2 在apifox中手动添加接口
1.QQ开启服务
QQ邮箱地址:登录QQ邮箱
进入qq邮箱,点击右上角设置,
点击:
朝下翻,点击:
点击:
点击生成授权码复制一下即可:
2.java中配置
2.1.导入依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.7.4</version></dependency>
2.2.yml配置
2.2.1 mail配置
spring:mail:username: xxx@qq.com #申请服务的邮箱,也就是发送邮件的邮箱password: xxx #刚才申请服务产生的授权码host: smtp.qq.com #默认default-encoding: UTF-8 #默认properties: #默认mail:smtp:auth: truestarttls:enable: truerequired: true
2.2.2 redis配置(与mail同级,在spring下一级)
redis:#Redis服务器地址 此处的host为通过ifconfig命令获取的linux的IP地址host: xxxx#密码password: xxx#Redis服务器连接端口port: 6379#Redis数据库索引(默认为0)database: 0#Redis连接超时时间(毫秒)timeout: 1800000#配置Redis连接池lettuce:pool:#Redis连接池的最大连接数(负数表示无限制)max-active: 20#Redis最大阻塞等待时间(负数表示没有限制)max-wait: -1#Redis连接池中的最大空闲连接数max-idle: 5#Redis连接池中的最小空闲连接数min-idle: 0
2.3.conroller层
2.3.1 在controller类上加上
@Value("${spring.mail.username}")private String mailUsername;
2.3.2 生成验证码方法
//随机生成6位数字public String getCode(String mail) {Random random = new Random();StringBuilder stringBuilder = new StringBuilder();for (int i = 0; i < 6; i++) {stringBuilder.append(random.nextInt(10));}//将随机得到的验证码存入redis中设置过期时间为60s
// redisTemplate.opsForValue().set("RedisCode", stringBuilder.toString(), 60, TimeUnit.SECONDS);String code = stringBuilder.toString();log.info("==============验证码=" + code);redisTemplate.opsForValue().set(mail, code, 60, TimeUnit.SECONDS);return stringBuilder.toString();}
2.3.3发送邮件接口
//发送邮件@GetMapping("/email")public R sendEmail(String toMail) {SimpleMailMessage massage = new SimpleMailMessage();massage.setFrom(mailUsername);massage.setTo(toMail);massage.setSubject("黑客帝国为你服务,请收好你的验证码:");massage.setText(getCode(toMail));//发送内容为验证码mailSender.send(massage);return R.success("发送成功!");}
2.3.4 用户登录接口(整合)
/*** 用户登录*/@PostMapping("/login")public R login(@RequestParam Map<String, Object> map) {String mail = (String) map.get("mail");String code = (String) map.get("code");String username = (String) map.get("username");String password = (String) map.get("password");// log.info(code.toString());//从Session中获取保存的验证码// Object codeInSession = session.getAttribute(phone);//从redis获取缓存的验证码Object codeInSession = redisTemplate.opsForValue().get(mail);//进行验证码的比对(页面提交的验证码和Session中保存的验证码比对)if (codeInSession != null && codeInSession.equals(code)) {//如果能够比对成功,说明登录成功//如果用户登录成功,删除redis中缓存的验证码redisTemplate.delete(mail);log.info("==================验证码校验成功!====================");boolean flag = userService.queryPasswordByUsername(username, password);if (flag) {return R.success("登录成功!");} else {return R.error("密码错误!");}}return R.error("验证码错误!");}
3.apifaox测试功能
3.1 idea直接导出接口到apifox
3.1.1 下载插件
3.1.2 来到apifox生成令牌
点击:
复制生成的令牌
3.1.3 来到idea设置里面进行相关配置
然后右键点击你要导入的项目
之后idea会弹出一个窗口,让你填写项目的id。
在apifox中复制一下你的项目ID填入即可。
这时候去apifox点击右上角的刷新即可: