手写邮箱获取验证码注册登录功能!!!

找回密码的困扰

自己做了一个博客网站,有登录注册功能,但是没有找回密码功能,思考了许久,发现可以通过第三方来实现,第一想到的就是通过短信验证码,但是资金问题,一条0.1元,属是有点贵(多了就贵了),然后想到了用微信扫码,但是微信也收费,无奈之下用邮箱吧,感觉邮箱还不错,只需要开启STMP协议就行了,开启之后,会有一个密码,那个密码保存好,后面会用到。

在这里插入图片描述

开始创建

首先创建一个springboot项目,然后引入mail依赖,简单配置即可。

1
2
3
4
xml复制代码<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

配置yaml,密码为自己生成的

在这里插入图片描述

准备工作做好之后,下面来写一下获取验证码的方法,把获取到的验证码存到session中方便后续判断。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ini复制代码public String getCode(String email, HttpSession session) {
int code = (int) (Math.random() * 1000000);
String codeString = String.valueOf(code);
if (codeString.length() != 6) {
code = code + 100000;
}

SimpleMailMessage message = new SimpleMailMessage();
// 设置邮箱标题
message.setSubject("验证码");
// 设置邮箱内容
message.setText("您好!\n验证码为:"+ code);
// 发送者邮箱
message.setFrom(username);
message.setTo(email);
mailSender.send(message);
session.setAttribute("email", email);
session.setAttribute("code", code + "");
return "success";
}

获取到验证码之后,可以进行注册了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ini复制代码    public BaseResult register(String email, String password, String code, HttpSession session) {
User user = new User();
String myEmail = (String) session.getAttribute("email");
String myCode = (String) session.getAttribute("code");
if (!email.equals(myEmail) || !code.equals(myCode)) {
return BaseResult.error();
}

user.setUsername(UUID.randomUUID().toString());
user.setEmail(email);
user.setPassword(password);
user.setSalt("abc");
user.setHeadUrl("url");
userMapper.addUser(user);
return BaseResult.ok();
}

注册完之后,就可以进行登录了。

1
2
3
4
5
6
7
scss复制代码    public BaseResult Login(String email, String password) {
User user = userMapper.selectUserByEmail(email);
if (user.getPassword().equals(password)) {
return BaseResult.ok();
}
return BaseResult.error();
}

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%