QQ邮箱验证码登录(移动端邮箱验证登录)
获取邮箱授权码
登录邮箱------->点击设置------->点击账户,下拉------->找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务------->按照步骤开启POP3/SMTP服务 ------->获取授权码
2.在pom.xml中添加依赖:
<!--mail--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.6.9</version></dependency>
3.配置yml文件:
mail:host: smtp.qq.com #不同的邮箱不一致,请自行百度查询port: 587 #qq邮箱默认username: 1916403680@qq.com #发送邮箱password: ******** #授权码# 设置是否需要认证,如果为true,那么用户名和密码就必须的,# 如果设置false,可以不设置用户名和密码,当然也得看你的对接的平台是否支持无密码进行访问的。auth=true
4.建实体类等等:
具体操作看这
5.写配置文件:
spring: mail:host: smtp.qq.com #不同的邮箱不一致,请自行百度查询port: 587 #qq邮箱默认username: 1916403680@qq.com #发送邮箱password: zsxhbrjtylbibccc #授权码auth: false #不需要邮件密码
6.写一个工具类用来存放随机验证码方法:
/*** 随机生成验证码工具类*/
public class ValidateCodeUtils {/*** 随机生成验证码* @param length 长度为4位或者6位* @return*/public static Integer generateValidateCode(int length){Integer code =null;if(length == 4){code = new Random().nextInt(9999);//生成随机数,最大为9999if(code < 1000){code = code + 1000;//保证随机数为4位数字}}else if(length == 6){code = new Random().nextInt(999999);//生成随机数,最大为999999if(code < 100000){code = code + 100000;//保证随机数为6位数字}}else{throw new RuntimeException("只能生成4位或6位数字验证码");}return code;}/*** 随机生成指定长度字符串验证码* @param length 长度* @return*/public static String generateValidateCode4String(int length){Random rdm = new Random();String hash1 = Integer.toHexString(rdm.nextInt());String capstr = hash1.substring(0, length);return capstr;}
}
7.写发送邮件的方法:
public interface UserService extends IService<User> {public String send(User user);
}
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {@Autowiredprivate JavaMailSender mailSender;//获取配置文件的邮件账号@Value("${spring.mail.username}")private String from;@Overridepublic String send(User user) {//生成随机数String code = ValidateCodeUtils.generateValidateCode(4).toString();try {SimpleMailMessage mailMessage = new SimpleMailMessage();//主题mailMessage.setSubject("验证码邮件");//内容mailMessage.setText("您收到的验证码是:" + code);System.out.println("您收到的验证码是:" + code);//发给谁mailMessage.setTo(user.getPhone());//你自己的邮箱(可以去配置文件中获取)mailMessage.setFrom(from);//发送mailSender.send(mailMessage);} catch (Exception e) {e.printStackTrace();return code;}return code;}
}
8.写控制类:
@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {@Autowiredprivate UserService userService;/*** 发送邮件短信验证码* @param user* @return*/@PostMapping("/sendMsg")public R<String> sendMsg(@RequestBody User user, HttpSession session){//获取邮箱String phone = user.getPhone();if(StringUtils.isNotEmpty(phone)){//发送验证码到邮箱String code = userService.send(user);//需要将生成的验证码保存到Sessionsession.setAttribute(phone,code);return R.success("手机验证码短信发送成功");}return R.error("短信发送失败");}/*** 移动端登录* @param map* @param session* @return*/@PostMapping("/login")public R<User> sendMsg(@RequestBody Map map, HttpSession session){//获取邮箱String phone = map.get("phone").toString();//获取验证码String code = map.get("code").toString();//从Session中获取保存的验证码Object codeInSession = session.getAttribute(phone);//进行验证码的比对(页面提交的验证码和Session中保存的验证码比对)if(codeInSession != null && codeInSession.equals(code)){//如果能够比对成功,说明登录成功LambdaQueryWrapper<User> eq = Wrappers.lambdaQuery(User.class).eq(User::getPhone, phone);User user = userService.getOne(eq);if(user == null){//判断当前邮箱账号对应的用户是否为新用户,如果是新用户就自动完成注册user = new User();user.setPhone(phone);user.setStatus(1);userService.save(user);}session.setAttribute("user",user.getId());return R.success(user);}return R.error("登录失败");}
}
QQ邮箱验证码登录(移动端邮箱验证登录)相关推荐
- java短信登录_JAVA短信验证登录
短信验证登陆 1.点击触发,以电话号码为参数调用发送验证登录短信方法 2.默认模板为验证模板 生成6位验证码 3.将生成的验证码和手机号码放入缓存,(已经设置好缓存存放时间) 4.调用发送模板短信方法 ...
- SSH证书登录方式(无密码验证登录)
常常在工作中需要在各个Linux机间进行跳转,每次密码的输入成了麻烦,而且也不安全.在实际使用中,在windows下常使用secureCRT工具或teraterm工具进行SSH登录,以及实现hadoo ...
- 【邮箱验证码】springboot 使用邮箱服务发送验证码 ,在阿里云服务器端口的配置
1.我们需要登录邮箱开通邮箱授权码 2.然后需要pom需要引入spring-boot-starter-mail <dependency><groupId>org.springf ...
- JavaWeb登录注册系统/界面(邮箱验证码,数据库连接,详细注释,可作结课作业,可用于学习,可接入其他主系统)
目录 1.前言 2.系统实机演示 3.系统分析与设计 (1)主要软件与工具 (2)系统分析 (3)系统规划 4.系统设计与构建 (1)JavaWeb创建 (2)JavaWeb运行 (3)先期依赖准备: ...
- java 验证邮箱_Java实现邮箱验证码
声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 邮箱验证码 一般能使用邮箱注册的账户,在进行登录.注册或忘记 ...
- java邮箱验证码_Java实现邮箱验证码
原标题:Java实现邮箱验证码 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 邮箱验证码 一般能使用邮箱注 ...
- java短信验证码功能发送的验证码如何校验_发送短信验证码和邮箱验证码—Java实现...
短信验证码 短信验证码都是调用一些接口来进行短信的发送,短信验证码在登录.注册等操作中使用的最广泛,本文这一节演示如何使用Java制作一个简单的短信验证码登录. 我这里演示使用的是聚合数据的短信接口( ...
- Flask项目实战——7—(Redis数据库存储验证码信息、验证登录界面的表单信息、注册功能实现、登录实现)
推荐一个API平台:聚合数据 1.Redis数据库存储验证码信息 保存手机验证码到Redis数据库 公有视图文件:apps/common/views.py # -*- encoding: utf-8 ...
- json web token 实践登录以及校验码验证
去年我写了一篇介绍 jwt 的文章. 文章指出如果没有特别的用户注销及单用户多设备登录的需求,可以使用 jwt,而 jwt 的最大的特征就是无状态,且不加密. 除了用户登录方面外,还可以使用 jwt ...
- 139邮箱java版下载_139邮箱手机版下载-139邮箱手机客户端下载 8.9.1-领航下载站
139邮箱手机客户端,是中国移动提供给我们的一款电子邮件软件,可以用手机号@139.com作为个人的邮箱,大大的提高了我们日常工作的效率,功能齐全,下面小编会写到,有需要的小伙伴可以下载体验一下哦~ ...
最新文章
- 微服务为什么一定要用docker
- 第二章 选择符和属性
- 写一个 JavaScript 框架:比 setTimeout 更棒的定时执行
- windows mobile开发循序渐进(6)windows mobile device center 使用问题
- spring注入私有字段_Spring字段依赖注入示例
- Java常用类StringBuffer详解
- 又一个网页下载者木马
- 大数据之-入门_大数据部门组织结构(重点)---大数据之hadoop工作笔记0007
- enum类型的标签内容根据语言的取法
- 转:Python 主进程被杀死时,如何保证子进程同时退出而不变为孤儿进程
- 不属于计算机完成科学特点的是,2019年网络教育统考《计算机应用基础》试卷版练习题2...
- 手机锁屏密码忘了怎么办
- 人工智能(机器学习)学习路线
- linux 命令行管理员身份运行,任意位置以管理员身份打开CMD(命令提示符)
- 陌陌发布新版 增加阅后即焚和短视频功能
- 刚体质量分布与牛顿-欧拉方程
- 分布式任务调度系统-定时任务的解决方案
- 考研计算机专业英语面试自我介绍,2017年计算机专业研究生英语面试自我介绍...
- 再度联手中国联通,开启第二个五年战略合作!
- [福大软工] Z班 团队作业——随堂小测(同学录) 作业成绩