当前位置: 首页 > news >正文

中国建设银行官网站纪念币wordpress互联网访问

中国建设银行官网站纪念币,wordpress互联网访问,互联网的营销推广方式,wordpress数据库里的主题痕迹目录 概述 前端搭建 后端搭建 生成验证码-存入redis#xff08;主要过程代码#xff09; 发送邮件#xff08;主要过程代码#xff09; 登录验证-取出redis中数据进行验证#xff08;主要代码#xff09; 完整代码一-LoginController 完整代码二-LoginService 完…目录 概述  前端搭建 后端搭建 生成验证码-存入redis主要过程代码 发送邮件主要过程代码 登录验证-取出redis中数据进行验证主要代码 完整代码一-LoginController 完整代码二-LoginService 完整代码三-LoginInfo 功能测试 概述  *使用邮箱进行登录验证功能实现。 主要功能点 1.在SpringBoot环境中发送邮件。 2.使用redis进行验证码的缓存及取出验证登录。  整体过程说明  前端搭建简易邮箱登录框当验证通过后自动跳转到网页index.html。 后端提供两个接口一个接口用于处理向指定邮箱发送验证码并将验证码存入redis中另一个接口用于处理登录验证验证发来的邮箱地址和验证码是否匹配。  技术选型  前端前端三剑客axios  后端SpringBoot redisjavaMail 前端搭建 项目结构  页面展示  说明 当我们输入邮箱地址后点击发送验证码会判断输入是否为空以及输入的邮箱是否符合规范如果输入不为空并且输入的邮箱符合规范那么按钮将禁用并且提示再次发送的倒计时。 例如 前端完整代码实例 --- js // 获取发送验证码按钮节点 let sendCodeBtn document.querySelector(#sendCodeBtn); // 获取邮箱地址输入框节点 let emailInput document.querySelector(#userEmail); // 获取验证码输入框节点 let verificationCode document.querySelector(#CheckCode); // 获取登录按钮节点 let loginBtn document.querySelector(#loginBtn);// 点击发送验证码逻辑代码 sendCodeBtn.addEventListener(click,function(){// 判断用户输入的邮箱地址是否符合规范let flag CheckInputEmail(emailInput.value);// 以及判断输入是否为空if(emailInput.value flag){// 调用方法发送请求向目标邮箱发送验证码getCode(emailInput.value);alert(验证码发送成功!)// 禁用发送按钮sendCodeBtn.disabled true;// 设置倒计时时间到后才可以再次发起验证码请求let time 60;sendCodeBtn.innerHTML time s后再次发送!time--;let myInterVal setInterval((){if(time ! 0){sendCodeBtn.innerHTML time s后再次发送!time--;}else{sendCodeBtn.disabled false;sendCodeBtn.innerHTML 发送clearInterval(myInterVal)}},1000)}else{alert(邮箱格式错误或为空!);} })// 点击登录按钮逻辑代码 loginBtn.addEventListener(click, function (){// 输入邮箱地址和验证码作为参数进行验证checkCode(emailInput.value,verificationCode.value); })// 验证邮箱输入格式是否正确 function CheckInputEmail(email){if (!email) {return false;}// 定义邮箱格式的正则表达式const emailRegex /^[A-Za-z0-9_.-][A-Za-z0-9.-]\.[A-Za-z]{2,}$/;// 检查邮箱是否符合格式要求return emailRegex.test(email); }// 发送请求:获取验证码 function getCode(emailAddress){axios.get(http://localhost:8080/logins?emailAddressemailAddress) }// 发送请求:检查验证码是否正确 function checkCode(emailAddress, code){axios.post(http://localhost:8080/logins,{emailAddress:emailAddress,code:code}).then(response { // 成功的回调console.log(返回结果 response.data)response.data? window.location ../html/index.html : alert(验证不通过);}) } 前端完整代码实例 --- html !DOCTYPE html html headmeta charsetutf-8title/titlelink relstylesheet href../css/login.csslink href../favicon.ico relshortcut iconscript src../js/axios.min.js/script /head body div idcontainerdiv idmy_headerspan idheader_title邮箱登录/span/divdiv idmy_bodydiv idbody_inputBlocklabel foruserEmail邮箱/labelinput iduserEmail typetext placeholder请输入邮箱button idsendCodeBtn typebutton发送验证码/buttonbrbrlabel forCheckCode验证码/labelinput idCheckCode typepassword placeholder请输入验证码brbutton idloginBtn登录/button/div/div /div script src../js/login.js/script /body /html 前端完整代码实例 --- css #container{border: solid #589bff 2px;width: 500px;height: 250px;margin: 50px auto;border-radius: 5px;background-color: #7acc67; }#my_header{background-color: #bcffc1;height: 50px;line-height: 50px;text-align: center;font-weight: 800;font-size: 20px; }#my_body{margin-top: 15px;margin-left: 35px; }#loginBtn{font-weight: 800;font-size: 18px;margin-top: 20px;margin-left: 153px;width: 101px; }label{width: 104px;display: inline-block;text-align: right; } input{border-radius: 5px;height: 27px;width: 212px;background-color: antiquewhite; } label{font-size: 18px; }button{font-size: 15px;border-radius: 5px;background-color: antiquewhite;height: 36px; }button:hover{cursor: pointer; }#sendCodeBtn{position: relative;top: 1px;font-weight: 600; } 后端搭建 目录结构  生成验证码-存入redis主要过程代码 1.我们获取时间戳的后四位来模拟随机验证码。 // 截取当前时间戳的后四位模拟验证码 long timestamp System.currentTimeMillis(); String verificationCode Long.toString(timestamp).substring(Long.toString(timestamp).length() - 4); 2.有了随机的验证码我们导入redis起步坐标并简单配置连接信息。 !--pom.xml导入redis起步坐标-- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId /dependency !--application.yml中编写-- redis:host: localhost !--redis地址--port: 6379 !--redis开放端口号--3.使用-loginController中编写 /*** 注入redisTemplate用于缓存数据*/ Autowired private RedisTemplateString, String redisTemplate; // 将传入邮箱地址为key验证码为value存入redis中并设置超时时间为5分钟 // 参数说明set(keyvalue, 超时时间时间单位) // 至于传入的详细参数下方会有完整代码提供解释 redisTemplate.opsForValue().set(emailAddress,verificationCode,5, TimeUnit.MINUTES); 发送邮件主要过程代码 1.获取授权码  说明 我们想要在编程环境发送邮件首先需要到我们自己所使用的邮箱中开启POP3/SMTP服务后获取授权密码。 在此我使用的是网易的163邮箱开启服务并获取授权密码步骤 开启任意一个根据步骤发送个短信后就出现授权码了。  2.编写邮件发送信息需要授权码 在application.yml中编写 3.编写发送邮件方法-在loginService中编写邮件发送逻辑 // 自动注入JavaMailSender用于发送邮件动作 Autowired private JavaMailSender javaMailSender; /*** 发送邮件* param from 发送方* param to 接收方* param subject 主题* param contents 内容* return 返回执行结果状态*/ public void sendEmail(String from, String to, String subject, String contents){// 创建一个简单消息对象用于发送简单消息不带附件或连接等SimpleMailMessage simpleMailMessage new SimpleMailMessage();// 封装邮件信息simpleMailMessage.setFrom(from); // 设置发送方simpleMailMessage.setTo(to); // 设置接收方simpleMailMessage.setSubject(subject); // 设置主题simpleMailMessage.setText(contents); // 设置发送内容// 发送动作javaMailSender.send(simpleMailMessage); } 4.调用方法-loginController中编写 /*** 注入loginService用于调用其中自定义的邮件发送方法*/ Autowired private LoginService loginService; // 编写邮件内容模板 String emailInfo 验证码为 verificationCode 5分钟内有效。;// 发送验证码到目标邮箱 loginService.sendEmail(maohe101163.com, emailAddress, 登录验证码, emailInfo); 登录验证-取出redis中数据进行验证主要代码 loginController中编写  // 取出传入数据对比redis中数据判断是否通过登录验证 // 判断传入的邮箱地址是否存在redis中 if(redisTemplate.hasKey(loginInfo.getEmailAddress())){// 取出对应邮箱地址为key的value值String storyCode redisTemplate.opsForValue().get(loginInfo.getEmailAddress());// 判断存在redis中的验证码和传入验证码是否相同相同返回truereturn loginInfo.getCode().equals(storyCode)? true:false; } return false; 完整代码一-LoginController package com.mh.controller;import com.mh.pojo.LoginInfo; import com.mh.service.LoginService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.connection.DataType; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*;import java.util.Date; import java.util.concurrent.TimeUnit;/*** Date:2023/2/28* author:zmh* description: 登录页面相关接口**/ Slf4j // 用于输出日志 RestController RequestMapping(/logins) public class LoginController {/*** 注入redisTemplate用于缓存数据*/Autowiredprivate RedisTemplateString, String redisTemplate;/*** 注入loginService用于调用其中自定义的邮件发送方法*/Autowiredprivate LoginService loginService;/*** 发送邮件* param emailAddress 目标邮件地址作为redis存储的key*/GetMappingpublic void sendEmail(String emailAddress){log.info(请求参数邮箱地址为{},emailAddress);// 1.生成4位随机验证码// 截取当前时间戳的后四位模拟验证码long timestamp System.currentTimeMillis();String verificationCode Long.toString(timestamp).substring(Long.toString(timestamp).length() - 4);log.info(验证码为:{},verificationCode);// 2.存入redis// 将传入邮箱地址为key验证码为value存入redis中并设置超时时间为5分钟redisTemplate.opsForValue().set(emailAddress,verificationCode,1, TimeUnit.MINUTES);// 3.编写邮件内容模板String emailInfo 验证码为 verificationCode 5分钟内有效。;// 4.发送验证码到目标邮箱loginService.sendEmail(maohe101163.com, emailAddress, 登录验证码, emailInfo);}/*** 登录验证* param loginInfo 接收前端传入的邮箱地址和code* return 返回执行结果*/PostMappingpublic String CheckEmailCode(RequestBody LoginInfo loginInfo){log.info(POST请求接收到的参数:{}***{},loginInfo.getEmailAddress(), loginInfo.getCode());// 取出传入数据对比redis中数据判断是否通过登录验证// 判断传入的邮箱地址是否存在redis中if(redisTemplate.hasKey(loginInfo.getEmailAddress())){// 取出对应邮箱地址为key的value值String storyCode redisTemplate.opsForValue().get(loginInfo.getEmailAddress());// 判断存在redis中的验证码和传入验证码是否相同相同返回truereturn loginInfo.getCode().equals(storyCode)? true:false;}return false;}}完整代码二-LoginService package com.mh.service;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Service;/*** Date:2023/2/28* author:zmh* description: 登录模块相关业务**/Service public class LoginService {Autowiredprivate JavaMailSender javaMailSender;/*** 发送邮件* param from 发送方* param to 接收方* param subject 主题* param contents 内容* return 返回执行结果状态*/public void sendEmail(String from, String to, String subject, String contents){// 创建一个简单消息对象用于发送简单消息不带附件或连接等SimpleMailMessage simpleMailMessage new SimpleMailMessage();// 封装邮件信息simpleMailMessage.setFrom(from);simpleMailMessage.setTo(to);simpleMailMessage.setSubject(subject);simpleMailMessage.setText(contents);// 发送动作javaMailSender.send(simpleMailMessage);}}完整代码三-LoginInfo package com.mh.pojo;import lombok.Data;/*** Date:2023/2/28* author:zmh* description: 登录信息-用于接收前端传入的body数据**/Data public class LoginInfo {String emailAddress;String code;}功能测试 说明在测试之前我们可以关闭一下浏览器缓存方便我们测试。F12打开控制台 输入邮箱获取验证码 邮箱接收到验证码 输入错误验证码进行对比验证 输入正确验证码进行对比验证  验证成功自动跳转到index.heml网页功能测试完成。
http://www.dnsts.com.cn/news/19312.html

相关文章:

  • 做网站选大公司好还是小公司阿里云 win wordpress 伪静态
  • 甘肃网站建设公司小企业网站建设在哪里找
  • 怎么做网站图标巩义网络建设网站
  • 为什么公司的网站打不开wap建站工具
  • 在机关网站建设会上讲话网站推广临沂
  • 兴宁市住房和城乡规划建设局网站wordpress统计蜘蛛
  • 网站的不同类南通通明建设监理有限公司网站
  • 网站搭建什么意思网络服务许可证
  • 国外网站有备案吗哪里可以做免费网站
  • 上海站群优化网站主机名
  • 阿里巴巴国际站开店流程及费用免费一级域名和空间
  • 徐州网站建设方案优化做婚纱影楼网站的价格
  • 上犹建设局网站建设一个直播网站要多少钱
  • 有货 那样的网站怎么做广州娱乐场所最新通知
  • 2021年有没有人给个网站网络网站建设公司排名
  • 杭州百度做网站多少钱网站搭建服务器
  • 自己做的网站怎么传入外网广告设计与制作基础知识
  • 北京的网站开发公司网站免费正能量入口
  • 怎么做自己的购物网站网站建设的关键技术
  • 零基础学pytho 网站开发怎样打造营销型网站建设
  • 网站不推广如何排名企腾做的网站怎么样
  • 网站服务器转移视频吗家装室内设计
  • 做厨具公司网站软文营销步骤
  • 用dw做网站怎么做出下拉菜单曹县网站开发
  • php学院网站源码深圳华强北封闭了吗
  • 哪个网站可以做店招开发网站需要什么技术2022
  • 朝阳seo建站网站收录没了
  • 开发网站app公司沈阳建设工程信息网中项目管理人员都填哪些人
  • 网站建设的职业叫什么本地打开WordPress慢
  • 自己做的网站被封了佛山专业网站制作设计