目录
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: true
starttls:
enable: true
required: 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点击右上角的刷新即可: