ES6解构
邮箱验证
1.application.yml配置(properties也可以)
spring:
mail:
#protocol: smtps/smtp
protocol: smtp
#配置 SMTP 服务器地址
host: smtp.qq.com
#发送者邮箱
username: xxxxxxxxx@qq.com
#配置密码,注意不是真正的密码,而是刚刚申请到的授权码 elrigokrtdnodhib
password: xxx
#端口号465或587
port: 587
#默认的邮件编码为UTF-8
default-encoding: UTF-8
protocal:
- qq : smtp
- 163 : smtps
host:smtp.qq.com或者smtp.163.com
username:发送者邮箱
password:xcgkimcybgbidjji
163邮箱SMTP服务器地址:smtp.163.com;端口号:465或994
qq邮箱SMTP服务器地址:smtp.qq.com;端口号:465或587
设置发送邮箱的内容部分
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(form);
message.setSubject("【重置密码验证码】");
String code = RandomUtil.randomNumbers(4);
message.setText("本次验证码为:" + code + "请妥善保存,有效期5分钟");
message.setSentDate(now);
message.setTo(email);
javaMailSender.send(message);
2.pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
3.java后端
Controller
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
mapper
package com.example.demo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.Validation;
import org.apache.ibatis.annotations.Select;
public interface ValidationMapper extends BaseMapper<Validation> {
@Select("SELECT * FROM validation WHERE email LIKE concat('%',#{email},'%')" )
public Validation selectByEmail(String email);
}
entity
package com.example.demo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
@TableName("validation")
@Data
public class Validation {
@TableId(type= IdType.AUTO)
private Integer id;
private String email;
private String code;
private Date time;
}
发送验证码
@GetMapping("/email/{email}")
public Result sendEmailCode(@PathVariable String email) {
Date now = new Date();
Validation validation = validationMapper.selectByEmail(email);
if (validation != null){
Date temp = validation.getTime();
//System.out.println(temp.compareTo(now));
if (temp.compareTo(now) > 0) {
return Result.error("error","验证码仍有效,请勿重复发送");
}
}
//设置发送邮箱的部分
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(form);
message.setSubject("【重置密码验证码】");
String code = RandomUtil.randomNumbers(4);
message.setText("本次验证码为:" + code + "请妥善保存,有效期5分钟");
message.setSentDate(now);
message.setTo(email);
javaMailSender.send(message);
if (validation == null) {
validation = new Validation();
validation.setEmail(email);
validation.setCode(code);
validation.setTime(DateUtil.offsetMinute(now, 5));
validationMapper.insert(validation);
}else {
validation.setCode(code);
validation.setTime(DateUtil.offsetMinute(now, 5));
validationMapper.updateById(validation);
}
return Result.success();
}
密码重置
//重置密码
@PutMapping("/reset")
public Result reset(@RequestBody Validation validation) {
Date now = new Date();
String email = validation.getEmail();
String code = validation.getCode();
System.out.println(email + code);
Validation temp = validationMapper.selectByEmail(email);
if (temp.getCode().equals(code) == false) {
return Result.error("error","验证码错误,请输入正确的验证码");
}
if (temp.getTime().compareTo(now) < 0) {
return Result.error("error","验证码过期,请重新获取");
}
User user = userMapper.selectByEmail(email);
if (user == null) {
return Result.error("error","该邮箱不是用户邮箱");
}
// 重置密码
user.setPassword("123");
userMapper.updateById(user);
return Result.success();
}
初始化VUE项目
在要创建项目的窗口打开CMD窗口
使用vue create 项目名,如
vue create spring-vue
然后选择自己需要的配置,有自己之前默认的,也可以选择vue提供给你的预设置信息,也可以自定义
选择完配置后,选择VUE版本,2 or 3
之后有三个问题
Use history mode for router? y/n
Where do you perfer placing config for Babel,ESLint, etc.? 一般选package.json
Save this as a preset for future projects? y/n
之后回车即可完成vue项目初始化
Vue项目初始化后的目录解析
public
src
- assets
- components
- 在别的页面引入这里面的东西
- router
- index.js 设置页面的映射关系
- store
- views
- 存放页面
- App.vue
- main
package.json
- 项目的依赖
vue.config.js
......
关于SSH
参考文章:
SSH公钥原理(密钥,秘钥,私钥)(看了还是懵逼啊!)_ssh公钥和私钥_Dontla的博客-CSDN博客
关于域名
从右往左级别依次降低
顶级域名
三类:
- 国家和地区顶级域名 country code top-level domains (ccTLDs):如中国cn,日本jp
- 通用顶级域名 generic top-level domains (gTLDs):如工商企业com 非盈利组织org
- 新通用顶级域名 New generic top-level domains (New gTLD)
一级域名
在顶级区域下划分出来的一个区域
买域名其实就是在选中某个顶级域名后,在其下面自定义一个一级域名的名字,如:daydayup.com
二级域名
域名所有者通过域名管理中的DNS解析设置来自行设置,如www.daydayup.com
DNS 域名系统 Domain Name System
关键点在于DNS服务器,用户输入网址,根据网址从DNS服务器上获取IP地址,再去访问相应的服务器
设置DNS解析:域名和ip地址的映射
正向代理与反向代理
看下面这两个博客
关于Vue初始项目的一点思考
在测试中我发现,对于初始生成的vue项目,不管访问/ 还是/about,浏览器总是优先在最上方显示App.vue的内容,然后再显示指定路由的内容,经过查询博客和测试,我得出猜想,Vue是先访问index.html,index.html中会去调用App.vue的内容,App.vue会根据浏览器上方的路由(在index.js中定义)再去调用相应的vue文件