前后端分离找回密码功能实现

前后端分离的注册登录(连接了数据库,含有页面跳转,判断等) 代码结构如下: register.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> ... 阅读详情

流程

1.用户名验证

2.验证通过后发送修改密码连接到用户绑定邮箱

3.用户登录邮箱,点击修改密码链接跳转到修该密码页面

4.验证码源码

4.1生成验证码

public void getCode(HttpServletRequest request, HttpServletResponse response) {
		// 验证码图片的宽度。
		int width = 70;
		// 验证码图片的高度。
		int height = 30;
		BufferedImage buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		Graphics2D g = buffImg.createGraphics();

		// 创建一个随机数生成器类。
		Random random = new Random();

		// 设定图像背景色(因为是做背景,所以偏淡)
		g.setColor(getRandColor(200, 250));
		g.fillRect(0, 0, width, height);
		// 创建字体,字体的大小应该根据图片的高度来定。
		Font font = new Font("Times New Roman", Font.HANGING_BASELINE, 28);
		// 设置字体。
		g.setFont(font);

		// 画边框。
		g.setColor(Color.BLACK);
		g.drawRect(0, 0, width - 1, height - 1);
		// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到。
		g.setColor(getRandColor(160, 200));
		for (int i = 0; i < 155; i++) {
			int x = random.nextInt(width);
			int y = random.nextInt(height);
			int xl = random.nextInt(12);
			int yl = random.nextInt(12);
			g.drawLine(x, y, x + xl, y + yl);
		}

		// randomCode用于保存随机产生的验证码,以便用户登录后进行验证。
		StringBuffer randomCode = new StringBuffer();

		// 设置默认生成4个验证码
		int length = 4;
		// 设置备选验证码:包括"a-z"和数字"0-9"
		String base = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

		int size = base.length();

		// 随机产生4位数字的验证码。
		for (int i = 0; i < length; i++) {
			// 得到随机产生的验证码数字。
			int start = random.nextInt(size);
			String strRand = base.substring(start, start + 1);

			// 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
			g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));

			g.drawString(strRand, 15 * i + 6, 24);

			// 将产生的四个随机数组合在一起。
			randomCode.append(strRand);
		}

		// 将四位数字的验证码保存到Session中。
		HttpSession session = request.getSession();
		session.setAttribute("signcode", randomCode.toString());

		// 图象生效
		g.dispose();

		// 禁止图像缓存。
		response.setHeader("Pragma", "no-cache");
		response.setHeader("Cache-Control", "no-cache");
		response.setDateHeader("Expires", 0);

		response.setContentType("image/jpeg");

		// 将图像输出到Servlet输出流中。
		ServletOutputStream sos;
		try {
			sos = response.getOutputStream();
			ImageIO.write(buffImg, "jpeg", sos);
			sos.flush();
			sos.close();
		} catch (IOException e) {

			e.printStackTrace();
			LOG.info("getCode{}:", e);
		}
		xxxMCRequestUtil.success(response, null);
	}
// 给定范围获得随机颜色
	Color getRandColor(int fc, int bc) {
		Random random = new Random();
		if (fc > 255) {
			fc = 255;
		}

		if (bc > 255) {
			bc = 255;
		}

		int r = fc + random.nextInt(bc - fc);
		int g = fc + random.nextInt(bc - fc);
		int b = fc + random.nextInt(bc - fc);
		return new Color(r, g, b);
	}

4.2验证验证码

public void checkCode(HttpServletRequest request, HttpServletResponse response) {
		String signCode = RequestUtil.getParameterAndTrim(request, "signCode");
		HttpSession session = request.getSession();
		String signcodeSession = (String) session.getAttribute("signcode");

		if (StringHelper.isEmpty(signCode)) {
			BasMCRequestUtil.fail(response, "验证码为不能为空", "验证码不能为空");
		}

		if (StringHelper.isEmpty(signcodeSession)) {
			BasMCRequestUtil.fail(response, "重置密码链接不正确,请重新操作", "重置密码链接不正确,请重新操作");
		}
		int isTrue = 1;
		// 验证的时候不区分大小写
		signCode = signCode.toUpperCase();
		signcodeSession = signcodeSession.toUpperCase();
		if (!signCode.equals(signcodeSession)) {
			isTrue = 0;
		}
		JSONObject json = new JSONObject();
		json.put("code", 0);
		json.put("isTrue", isTrue);
		JtableUtil.outputAsJTableJSON(response, json.toString());

	}

 

 

 

基于Springboot+Mybatis-plus+Vue+Element-UI实现的前后端分离的员工管理系统 阅读详情

相关推荐

VUE构建前后端分离的前端项目

VUE构建前后端分离的前端项目(超详细) 1.使用vue-cli创建项目 2.使用elementUI组件编写页面 3.使用axios与后台交互 4.使用webpack构建工具打包 5.部署到Tomcat 1.技术背景 前后端分离的优势: 分工明确,提高工作效率,前端主要关注页面、用户体验,后端主要关注业务、安全。 性能提升,前端通过路由配置实现按需加载,后端无需解析前端页面。 前后端同时开发,提升开发效率。 发现BUG可以快速定位问题,代码的重构和可维护性强,降低维护成本。 分离部署,静态资源由前端服

wusq的博客 1万+

elm_flask前台管理项目日志 -- 前后端分离项目开发设计

前台管理项目日志 项目分析 前后端分离,后端根据前端提供的api接口向前端提供json数据,进行数据的渲染 app绑定后台系统数据库 redis配置,作为缓存使用 redis的配置 def get_redis(): from redis import Redis return Redis(host='主机号', port=端口号) # 可以使用远程的服务器 ...

我可能只是个小白 511

springboot+shiro前后端分离实现!!

本文章参考两位大佬写的博客完成的 https://blog.youkuaiyun.com/weixin_42236404/article/details/89319359 https://blog.youkuaiyun.com/qq_42109746/article/details/97102231 1、前言 1.1、唠嗑部分 学习shiro之前,建议先学习springsecurity,将两个框架进行对比的方式学习,会有更加深的印象。我之前写过一篇关于springsecurity的博客,你可以参考参考,个人感觉挺详细.

weixin_42375707的博客 8175

后端业务之忘记密码功能

本文讲解是基于前后端分离项目 关于项目使用邮箱忘记密码的功能 前端需要设计一个页面,点击找回密码,跳转到找回密码界面。 找回密码界面有三个数据项:邮箱号(当然也可以是手机号,不过本篇文章主要研究邮箱的方式)、验证码。 用户输入邮箱,点击发送验证码。此时前端调用后端的接口(数据部分会带上邮箱号) 后端接收到邮箱,会先在数据库查找该邮箱号是否存在。如果不存在,则返回前端一些可读的错误信息。如果查询到邮箱对应有存在用户,则可以执行向该邮箱发送验证码的功能。 想要通过Java向指定的邮箱发送验证码,首先我们能.

qq_56769991的博客 1516

Springboot + Spring Security 实现前后端分离登录认证及权限控制

Springboot + Spring Security 实现前后端分离登录认证及权限控制 前言     关于Spring Security的概念部分本文不进行赘述,本文主要针对于对Spring Security以及Springboot有一定了解的小伙伴,帮助大家使用Springboot + Spring Security 实现一个前后端分离登录认证的过程。     文章会一步一步循序渐进的带大家敲一遍代码。最终的代码请看最后。     代码中我用到了插件lombok来生成实体的getter/set

m0_68850571的博客 1万+

Spring boot 集成 Kaptcha 实现前后端分离验证码功能

简述 在web开发中验证码是一个常见的功能。不论是防止机器人还是爬虫都有一定的作用,我们可以自己编写验证码的工具类,也可以使用比较方便的验证码工具。 本文使用Spring boot 集成 Kaptcha 实现前后端分离验证码功能,这里为什么强调前后端分离,拿登陆功能为例,在登陆我们要请求后台返回一张验证码图片,然后输入用户名密码加上验证码,再次提交给后台,如果不是前后端分离,可轻松的从se

二一点 1万+

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

文章目录1. 无状态登录1.1 什么是有状态1.2 什么是无状态1.3 如何实现无状态1.4 各自优缺点2. 登录交互2.1 前后端分离的数据交互2.2 登录成功2.3 登录失败3. 未认证处理方案4. 注销登录 这是本系列的第四篇,有小伙伴找不到之前文章,松哥给大家列一个索引出来: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密...

江南一点雨的专栏 4万+

实现用户找回密码功能:完整指南与工具

在互联网服务中,用户的安全性一直是最为重要的考量因素之一。当用户遇到忘记密码的情况,能够通过一系列验证机制成功找回密码,是构建用户信任的关键环节。本章将对用户找回密码功能的实现进行概述,为接下来的深入分析打下基础。用户找回密码一般需要经过验证用户身份、提供密码重置链接或信息、验证安全问题、设置新密码等几个关键步骤。每个步骤都设计有安全措施,以防止未授权的用户访问。本系列文章将详细探讨各个环节的实现机制与最佳实践。在第二章中,我们探讨了用户身份验证机制的基础理论和实践中的技术。

weixin_42443533的博客 1572

java ajax登录界面代码_javaweb利用ajax使登录窗口不跳转页面实现对账号密码的判断...

package com.servelt;import java.io.IOException;import java.sql.SQLException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;impor...

weixin_30788829的博客 331

基于Transformers库的BERT模型:一个文本情感分类的实例解析

简介 本文来讲述BERT应用的一个例子,采用预训练好的BERT模型来进行演示。BERT的库来源于Transformers,这是一个由PyTorch编写的库,其集成了多个NLP领域SOTA的模型,比如bert、gpt-2、transformer xl等,并且可以自由选择已经预训练好的模型参数,我们可以基于这些参数进行进一步的训练调试。 Part 1: 利用BERT基于特征的方式进行建模 1、任务与数...

蓝天白云梦的csdn博客 2万+

利用wolcmd.exe批处理执行远程唤醒

代码如下: @echo off cls :check if exist wolcmd.exe goto targetmac echo 缺少wolcmd.exe echo. goto end :targetmac cls echo -------------------------------------------------------- echo 目标主机PC-01地址:40235678A...

Chriseo的博客 6948

前后端分离项目实战-通用管理系统搭建(前端Vue3+ElementPlus,后端Springboot+Mysql+Redis)第四篇:找回密码功能实现(手机验证码找回和邮箱验证码找回)

每个人都有惰性,但不断学习是好好生活的根本,共勉!

感谢阅读 1868

保姆级教程:用torch.profiler给你的vLLM推理做个“全身体检”(附Perfetto可视化分析)

本文提供了一份详细的vLLM推理性能分析教程,通过torch.profiler和Perfetto工具链实现从数据采集到可视化分析的全流程。文章涵盖了环境配置、性能数据采集、trace文件解析以及Perfetto可视化分析,帮助开发者优化大模型推理服务的性能,显著降低计算资源消耗。

weixin_29041767的博客 357

SPRINGBOOT+VUE前后端分离实现的前后台一站式网站

本文介绍了基于SpringBoot+Vue技术栈搭建的一站式人工智能网站。系统采用邮箱注册登录机制,支持密码找回功能。前台包含主页、新闻、视频、订单管理等模块,后台集成角色权限管理和AI工具集合。该平台整合了当前主流人工智能技术,为用户提供便捷的智能服务体验,展现了AI技术在现代应用中的集成与创新。

p6448777的博客 56

二、频率调制光谱(FMS)技术——error信号的数学模型及其他推论

一些推论。

qq_41111336的博客 1605

从零开始:用Python实现AlphaZero五子棋AI(附完整代码)

本文详细介绍了如何从零开始使用Python实现AlphaZero五子棋AI。通过工程化实践,逐步构建蒙特卡洛树搜索(MCTS)、轻量化残差网络(ResNet)以及自博弈训练循环,并提供完整可运行的代码。文章旨在帮助开发者绕过复杂理论,聚焦实战,最终打造一个能够自我学习与对弈的智能体,是深度强化学习在游戏AI领域的一次完整项目实战。

weixin_29081703的博客 416

VUE+SPRINGBOOT从0-1打造前后端-前后台系统-整体示例

本文介绍了基于VUE框架开发的前后台系统功能模块,主要分为三个部分:用户账户管理(注册、登录、密码找回)、VUE前台系统功能和VUE后台管理系统功能。系统采用前后端分离架构,通过VUE技术实现用户界面交互,为不同用户角色提供相应功能模块。文章简要概述了系统的基本架构和核心功能模块划分。

p6448777的博客 319

从DDPM到DDIM:深入解读《Denoising Diffusion Implicit Models》

DDIM发表在ICRL2021上,是DDPM重要的改进之一,能显著提高DDPM的样本质量、减少采样时间,并且能显式控制插值,已经被广泛应用到现在的Diffusion Models上。这篇博客和大家一起详细解读一下DDIM,认识这一伟大的模型。.........

沉迷单车的追风少年 1万+

SpringBoot实现通过邮箱找回密码功能

养成习惯,先赞后看!!! 目录1.前言2.步骤2.1导入依赖2.2开启邮箱的SMTP服务2.3配置application.yaml文件2.4 编写逻辑的步骤2.4.1创建pm_validate2.4.2创建对应的实体类以及mapper文件2.4.3编写 dao2.4.4编写 service2.4.5编写 controller3.效果演示 1.前言 之前在大学里面做项目的时候碰到修改密码那一块的,自己当时都是做的很简单的逻辑,也想过怎么通过邮箱或者手机号这种进一步验证身份来修改密码,但是自己当时太菜了,也没怎

lovely__RR的博客 6032

GPFS扩展技术原理(十一)-FMDN广播与EID加解密

GFPS扩展技术原理(十一)FMDN广播及EID加解密

十多年蓝牙协议软件开发,擅长蓝牙协议分析 935

高项备考论文:规划绩效域

高项备考论文:规划绩效域

liuxu324的博客 1128

Springboot + Spring Security 实现前后端分离登录认证及权限控制

Springboot + Spring Security 实现前后端分离登录认证及权限控制前言本文主要的功能文章目录一、数据库表设计建表语句初始化表数据语句二、Spring Security核心配置:WebSecurityConfig三、用户登录认证逻辑:UserDetailsService1、创建自定义UserDetailsService2、准备service和dao层方法(1)根据用户名查询...

I_am_Hutengfei的博客 11万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SpringSecurity前后端分离

SpringSecurity前后端分离 一、认证流程讲解 1、原始认证流程 原始认证流程通常会配合Session一起使用,但前后端分离后就用不到Session了 SpringSecurity默认的认证流程如下图(该图是B站UP主“三更草堂”讲SpringSecurity课程的图) DaoAuthenticationProvider继承AbstractUserDetailsAuthenticationProvider抽象类,而AbstractUserDetailsAuthenticationProvi

X_lsod的博客 2万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

前后端配合实现密码找回功能思路

-前后端配合实现密码找回功能前端-邮箱验证用户进入忘记密码页面(localhost:8080/#/FindPwd),将用户名和图形验证码填入。前端对用户名进行后端校验(调用后端的api判断该用户名是否存在),如果用户不存在,给出相关提示;如果用户存在,然后调用发送邮件的后端api(携带用户名信息)后端-发送邮件后端接收到前端发送邮件的请求后,通过用户名从数据库查找对应的...

weixin_34320724的博客 898

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【若依后管框架(前后端分离版)】 如何部署若依以及添加自己的功能模块和菜单

【若依后管框架(前后端分离版)】 如何部署若依以及添加自己的功能模块和菜单

代码改变世界 2万+

前后端分离项目的session问题

之前曾了解前后台分离项目都采用token解决session。 于是产生疑问:前后台分离项目都没有session吗?又不是分布式为何会产生session不能获取问题? 理清思路:前后台分离项目session不能获取到的原因是因为跨域导致请求无法携带和服务器对应的cookie,不是因为前后台分离!前后台分离项目涉及跨域,但是通过一些手段可以避免跨域如nginx反向代理代理到同一个域下,其他方式如C...

入门菜鸟程序员的成长 2万+
上一篇: 利用ant工程和dbunit工具向gbase数据库中插入测试数据
下一篇: SQL Error: 1064, SQLState: 42000
gu_study
博客等级 码龄9年 28粉丝 36原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值