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

有那种网站的浏览器开发一款app大概多少钱

有那种网站的浏览器,开发一款app大概多少钱,景德镇网站建设公司,夜晚直播一、验证码使用逻辑 二、生成验证码 使用Kaptcha库生成验证码 这里使用的是后端调用Kaptcha库生成验证码的二进制字符串&#xff0c;传给前端&#xff0c;由前端转为图片 1、引入依赖 <dependency><groupId>com.github.penggle</groupId><artifactId>…

一、验证码使用逻辑

在这里插入图片描述

二、生成验证码

使用Kaptcha库生成验证码
这里使用的是后端调用Kaptcha库生成验证码的二进制字符串,传给前端,由前端转为图片

1、引入依赖

		<dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version></dependency>

2、生成验证码

// 生成验证码
String code = kaptchaProducer.createText();

3、根据文本生成验证码图片(BufferedImage对象)

BufferedImage kaptchaImage = kaptchaProducer.createImage(code);

4、将图片转换为Base64

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ImageIO.write(kaptchaImage, "jpg", outputStream);
String base64Img = Base64.getEncoder().encodeToString(outputStream.toByteArray());

ByteArrayOutputStream:内存输出流,用于临时存储图片二进制数据。

ImageIO.write:将BufferedImage以JPEG格式写入输出流。

Base64编码:将二进制图片数据转换为Base64字符串,便于前端通过直接显示。

5、构造返回前端的响应

Map<String, String> imgMap = new HashMap<>();
imgMap.put(key, "data:image/jpeg;base64," + base64Img);

返回值格式:生成一个键值对,例如:

{ "captchaKey": "data:image/jpeg;base64,/9j/4AAQSkZJRgA..." }

key的作用:前端提交验证码时需携带此键,服务端通过它从缓存中获取正确的验证码文本。

6、缓存验证码

Map<String, String> cacheMap = new HashMap<>();
cacheMap.put(CODE, code.toUpperCase());
captchaCache.putCaptcha(key, cacheMap);

Google Guava 缓存库实现的验证码缓存组件,用于在单节点部署环境中存储和验证验证码信息。

  1. 转换为大写:code.toUpperCase()使验证码不区分大小写(用户输入a3g7或A3G7均可通过)。
  2. 缓存逻辑:
  • CODE是常量(如"code"),作为缓存Map的键。
  • captchaCache是自定义缓存组件,将key与验证码文本关联,通常设置有效期
@Override
public boolean putCaptcha(String key, Map<String, String> value) {try {cache.put(key, JSONObject.fromObject(value).toString());} catch (Exception ex) {return false;}return true;
}

三、验证验证码

一般在调用登录接口前验证验证码,通过SpringMVC的拦截器实现
1、验证验证码,判断是否为空

		if(StringUtil.isEmpty(key)) {throw new BadRequestAlertException(ErrorConstants.CAPTCHA_TYPE, "The information of captcha is missing", "captcha.header", "missing");}

2、获取验证码(如果验证码过期则无法获取到)

Map<String, String> validateMap = captchaCache.getCaptcha(key);

3、删除验证码缓存

captchaCache.deleteCaptcha(key);

4、比较验证码的值

		if(captcha.get(CODE).equalsIgnoreCase(validateMap.get(CODE))){return true;}
http://www.dtcms.com/a/595965.html

相关文章:

  • 怎么建立自己的企业网站南宁横县网站建设推广
  • 普通网站逻辑设计数据流图wordpress中文
  • 专门做产品测评的网站塑钢模板价格一平方
  • ppt做视频模板下载网站wordpress 下载别人的主题
  • 怎么修改网站标题关键词描述常州做网站的 武进
  • 禁止下载app网站互联网小程序设计师
  • 龙口有没有做网站的北京网
  • wordpress电商建站免费网站如何做推广
  • 莆田网站设计无证做音频网站违法吗
  • 定制制作网站价格苏州企业服务平台
  • 临沂网站建设报价怎样做网站软件
  • 用软件做网站南京网站设计网站
  • 网站建设的基本步奏龙华做网站的
  • seo怎么给网站做外链网络品牌营销策略有哪些
  • 那些免费网站做推广比较好网站 搜索 关键字 description
  • 腾讯云网站建设教程视频网站 优化 关键字
  • 微网站难做么网站建设业务活动
  • 江苏省电力建设一公司网站wordpress编辑器 模板
  • 微信旅游网站建设一个公司可以做两个网站吗
  • 律师做网站成都企业网站备案流程
  • 张家港做网站优化价格wordpress cosy
  • 2008iis添加网站打不开布料市场做哪个网站好
  • 学校学院网站建设目标c2c模式的概念
  • 免费手机网站源码天涯网站建设路小学
  • 莱芜做网站公司小学网站建设
  • wordpress 大学网站西安火车站建设
  • 网站建设衤金手指花总十五门户网站系统业务流程图
  • ip怎么做网站茶叶公司网站模板
  • 八里河风景区网站建设设计概述如何使用二级域名做网站
  • 微信兼职网站开发企业网站的制作用到的技术