注册功能是一个网站的基本功能
刚刚实现了用邮箱来注册并验证的程序
这里记录下

有了上篇SpringBoot发送邮件的基础,我们就可以完成一个简单的邮箱注册功能了

首先我们要在SpringBoot里配置pom.xml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

这个比起之前的邮件服务还多了两个配置
分别是

  • mysql驱动
  • jpa

在application.properties中添加邮件和mysql配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
spring.mail.host=smtp.mxhichina.com
spring.mail.username=邮箱账号
spring.mail.password=密码
spring.mail.default-encoding=UTF-8
mail.fromMail.addr=你想要用来发送的邮箱
server.port=8899
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

数据库的用户字段

用户字段至少要有这几个方面组成

  • 用户邮箱
  • 用户密码
  • 用户激活状态
  • 用户激活码

激活状态用来显示用户是否已经通过邮箱完成激活,未完成为 0 完成为 1

激活码是一串随机字符串,用来在邮件中添加用户标识

邮箱验证的流程

用户填写完账号密码点击注册后
后台获取用户信息
验证是否合法
如果合法就将用户激活状态置0
开启邮件发送服务
用户收到邮件,邮件里有一个连接,由用户id 和 激活码组成
用户点击激活链接
账号完成激活,用户激活状态置1

至此,一个简单的注册流程就完成了

一些相关代码

发送验证邮件服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if(!user.getUserEmail().matches("^\\w+@(\\w+\\.)+\\w+$")) {
return ResultUtil.error(10, "邮箱不合法");
}
if(userRepository.findByUserEmail(user.getUserEmail()) != null) {
return ResultUtil.error(2, "邮箱已被注册");
}
//加盐
String code = CodeUtil.generateCode(user.getUserEmail());
String codepw = CodeUtil.generateCode(user.getPassword());
user.setPassword(codepw);
user.setUserState(0);
user.setUserCode(code);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
user.setRegisterTime(df.format(new Date()));
if(mailUtil.sendRegisterMail(user.getUserEmail(), code)) {
return ResultUtil.success(userRepository.save(user));
}
return ResultUtil.error(4, "邮件发送失败");

发送html邮件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
/**
* Created by cw on 2017/7/19.
*/
@Component
public class MailUtil {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private JavaMailSender mailSender;
@Autowired
private TemplateEngine templateEngine;
@Value("${mail.fromMail.addr}")
private String from;
public boolean sendRegisterMail(String email, String code) {
MimeMessage message = mailSender.createMimeMessage();
String register_link = "http://localhost:8899/api/email=" + email + "/code=" +code;
//创建邮件正文
Context context = new Context();
context.setVariable("register_link", register_link);
String emailContent = templateEngine.process("UserRegisterTemplate", context);
try {
//true表示需要创建一个multipart message
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(email);
helper.setSubject("低电查询验证邮件");
helper.setText(emailContent, true);
mailSender.send(message);
logger.info("html邮件发送成功");
return true;
} catch (MessagingException e) {
logger.error("发送html邮件时发生异常!", e);
return false;
}
}
}

邮箱验证

1
2
3
4
5
6
7
8
9
10
@Override
public Result userCheckMail(String email, String code) {
User user = userRepository.findByUserCode(code);
if(user.getUserEmail() != null && user.getUserEmail().equals(email)) {
user.setUserState(1);
userRepository.save(user);
return ResultUtil.success();
}
return ResultUtil.error(6, "邮件验证失败");
}

SpringBoot邮箱注册验证相关推荐

  1. Windows下安装nacos2与springboot服务注册验证

    本文章是nacos2服务注册发现入门级文章,重点介绍了如何安装部署nacos2,如何选择spring boot版本.spring cloud版本,如何开发spring boot服务,如何注册到naoc ...

  2. java实现邮箱注册验证

    java实现邮箱验证的功能 在日常生活中,我们在一个网站中注册一个账户时,往往在提交个人信息后,网站还要我们通过手机或邮件来验证,邮件的话大概会是下面这个样子的: 用户通过点击链接从而完成注册,然后才 ...

  3. 电子邮箱注册激活(java)

    大家在注册论坛或者注册一些软件的账号的时候有时需要填写邮箱来注册,而为了测试你的邮箱是否是你自己的会给你的邮箱发送一个激活码链接,只有你点击这个链接之后邮箱才能注册成功,接下来我们就来实现一下这个流程 ...

  4. 注册验证之邮箱验证(SpringBoot框架)

    一.首先先加入邮箱依赖,看下面链接! JAVA实现邮件发送(SPRING BOOT 框架) 二.大概思路及实现 1.数据库加一个验证字段 2.先让用户进行注册 前端实现:(正常的注册,只是邮箱必填,会 ...

  5. SpringBoot实现QQ邮箱注册和登录

    1.登录注册思路 1.1.思路 1.2.整个项目结构图 2.准备 2.1.开启邮箱POP3/SMTP服务 2.2.创建一个spring boot项目的时候,一直确认,jdk选择8. 2.3.appli ...

  6. mysql查询使用qq邮箱注册_Spring Boot实现qq邮箱验证码注册和登录验证功能

    1.登录注册思路 这是一个使用spring boot做的一个qq邮箱注册和登录的项目. 没写前端页面,使用postman测试.有截图详细. 1.1.思路 注册:通过输入的邮箱发送验证码,检验前端传来的 ...

  7. SpringBoot 实现 QQ邮箱注册和登录

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 关注订阅号「程序员小乐」,收看更多精彩内容 每日英文 Memories, b ...

  8. 基于springboot实现注册功能发送激活码至邮箱激活账户登录

    文章目录 激活原理 运行说明(重点) 实例演示(重点) 代码说明 项目结构图 准备工作 emailactivate项目详细代码 common UUIDUtils config DruidDbConfi ...

  9. SpringBoot 实现 QQ 邮箱注册和登录

    点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2020 超神之路,很肝~ 中文详细注释的开源项目 ...

  10. Java 使用邮箱进行注册验证

    1.Springboot 使用邮箱进行注册验证需要导入依赖,如果是Java项目则需要导入email.jar <!--email--> <dependency><group ...

最新文章

  1. 如何备考上海市高等学校计算机一级,计算机一级考试备考攻略
  2. 卓越软件工程--《微软360度》读后感
  3. Linux Shell脚本攻略学习总结:一
  4. apache动态编译/静态编译区别
  5. jenkins清除、修改admin主账号的密码
  6. js遍历多层嵌套对象存在的JSO数据
  7. SAP Cloud for Customer的work center显示逻辑
  8. mysql秒级平滑_DDM实践:数据库秒级平滑扩容方案
  9. 贪心算法——选择不相交区间问题
  10. 期刊投稿状态_SCI投稿全过程解析及拒稿后处理对策
  11. message:MCODE参数不存在,mobile类型mcode参数必需
  12. Ionic 学习笔记
  13. Python 学习---------Day4
  14. x=n; y=1; while(x=(y−1)∗(y−1)) y++; 以上程序的时间复杂度为 ?
  15. 微信小程序点餐系统源码(微信点餐软件外卖系统)搭建
  16. 互联网企业的职位职位之间的相互关系
  17. 能自由转换格式的PDF软件
  18. c语言电脑三点竖怎么输入,竖怎么打 【处理步骤】
  19. 语言环境设置命令locale 命令(linux,对应于window 7(win叫什么命令?)控制面板-区域和语言里的设置)
  20. 【C++】this 和 常量成员函数

热门文章

  1. Selenium官网教程
  2. 惠威D1080带来精致听音感受
  3. 刷入Magisk通用方法
  4. TextCNN文本分类实践
  5. QT线程创建的两种方法
  6. 3Dmax玻璃材质参数应该怎样设置
  7. linux 一些好用的软件
  8. 单项选择题标准化考试系统设计c语言报告,C语言课程设计(单项选择题标准化考试系统)报告...
  9. ad15图层显示_AD15视图配置窗口太大点击不了确定怎么设置?
  10. 小米路由器3是基于linux,小米路由器3(MI-3)刷华硕固件不用虚拟机刷华硕固件无需虚拟机方法...