男女明星直接做的视频网站网页搜索屏蔽广告
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:18
当前位置: 首页 > news >正文
男女明星直接做的视频网站,网页搜索屏蔽广告,开发一个公司官网大概多少钱,上海浦东哪里有做网站的公司1.获取图形验证码接口 功能要求 1、随机生成6位字符 2、将字符生成base64位格式的图片#xff0c;返回给前端 3、将生成的字符存储到redis中#xff0c;用匿名身份id#xff08;clientId#xff09;作为key#xff0c;验证码作为value。 clientId通过/login/getClien… 1.获取图形验证码接口 功能要求 1、随机生成6位字符 2、将字符生成base64位格式的图片返回给前端 3、将生成的字符存储到redis中用匿名身份idclientId作为key验证码作为value。 clientId通过/login/getClientId接口获取 4、验证码15分钟后过期 依赖包 !– 工具类 – dependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.8.10/version /dependency!– redis – dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactIdversion2.7.5/version /dependency redis缓存配置并完善图形验证码接口
redis配置
redis:database: 0port: 6379lettuce:pool:#连接池中最大空闲连接数为 30。这意味着连接池可以保持最多 30 个空闲的 Redis 连接以便在需要时重用。max-idle: 30#连接池中最小空闲连接数为 10。这表示连接池至少会保持 10 个空闲连接以便在需要时快速获取可用连接。min-idle: 10#连接池中的最大活动连接数为 30。这是指连接池在同一时间可以支持的最大活动使用中连接数量。max-active: 30#当连接池已用尽且达到最大活动连接数时从连接池获取连接的最大等待时间为 10,000 毫秒10 秒。如果在等待时间内没有可用连接将抛出连接超时异常。max-wait: 10000# 应用程序关闭时Lettuce 将等待最多 3 秒钟来完成关闭操作。如果超过这个时间仍未完成则会强制关闭连接。shutdown-timeout: 3000host: 127.0.0.1 RedisTemplateDefaultConfig.java package com.bage.common.config;import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer;/*** Redis Template 配置/ ConditionalOnProperty(prefix sys,name redis-template-config,havingValue true) Configuration Slf4j public class RedisTemplateDefaultConfigT {/* redisTemplate相关配置** param factory* return/Beanpublic RedisTemplateString, T redisTemplate(RedisConnectionFactory factory) {log.info(RedisTemplateConfig init start …);RedisTemplateString, T template new RedisTemplate();// 配置连接工厂template.setConnectionFactory(factory);//使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值默认使用JDK的序列化方式Jackson2JsonRedisSerializerObject jacksonSerializer new Jackson2JsonRedisSerializer(Object.class);ObjectMapper om new ObjectMapper();// 指定要序列化的域field,get和set,以及修饰符范围ANY是都有包括private和publicom.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);jacksonSerializer.setObjectMapper(om);// 值采用json序列化template.setValueSerializer(jacksonSerializer);// 使用StringRedisSerializer来序列化和反序列化redis的key值template.setKeySerializer(new StringRedisSerializer());// 设置hash key 和value序列化模式template.setHashKeySerializer(new StringRedisSerializer());template.setHashValueSerializer(jacksonSerializer);template.afterPropertiesSet();log.info(RedisTemplateConfig init end);return template;} } LoginController.java import com.bage.finance.biz.dto.form.GetBase64CodeForm; import com.bage.finance.biz.service.MemberLoginService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;/** author 啟王朝* date2024/6/6 18:24/ Api(tags 用户登录模块) RestController RequestMapping(/login) RequiredArgsConstructor /** RequiredArgsConstructor final 作用 可以省略 Autowired 和 Rescuorce 需要注入包的前面必须加上final/ Slf4j public class LoginController {final MemberLoginService memberLoginService;// 获得游客登录的getClientIdApiOperation(value 获取客户端id)GetMapping(/getClientId)public com.bage.common.dto.ApiResponseString getClientId() {String clientId memberLoginService.getClientId();return com.bage.common.dto.ApiResponse.success(clientId);}/** 作用/ApiOperation(value 生成base64位格式的图片)GetMapping(/getBase6Code)/** 作用 GetBase64CodeForm form 是将生成的字符存储到redis中用匿名身份idclientId作为key验证码作为value。* 0/// Validated 必须加统一拦截才能起作用public com.bage.common.dto.ApiResponseString getBase64Code(Validated ModelAttribute GetBase64CodeForm form) {// 返回的是code 为Base64的验证码图片String code memberLoginService.getBase64Code(form);return com.bage.common.dto.ApiResponse.success(code);} } MemberLoginService.java import com.bage.finance.biz.dto.form.GetBase64CodeForm;/** Author啟王朝* nameMemberLoginService* Date2024/6/6 18:18* FilenameMemberLoginService/ public interface MemberLoginService {// 获取客户端idString getClientId();/** 作用获得Base64的图形编码/String getBase64Code(GetBase64CodeForm form); }MemberLoginServiceImpl.java import cn.hutool.captcha.CaptchaUtil; import cn.hutool.captcha.LineCaptcha; import com.bage.finance.biz.dto.form.GetBase64CodeForm; import com.bage.finance.biz.service.MemberLoginService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service;import java.util.UUID; import java.util.concurrent.TimeUnit;import static com.bage.finance.biz.constant.RedisKeyConstant.GRAPHIC_VERIFICATION_CODE;/** author 啟王朝* date2024/6/6 18:19/ Service Slf4j RequiredArgsConstructor // 构造参数的注解 public class MemberLoginServiceImpl implements MemberLoginService {final RedisTemplateString, String redisTemplate;/** Date获取客户端id // date变量下面会用内置函数进行赋值* Author* return/Overridepublic String getClientId() {return UUID.randomUUID().toString().replace(-, );}/** 作用获取图形验证码界面/Overridepublic String getBase64Code(GetBase64CodeForm form) {// TODO CaptchaUtil 用工具形成验证码图片/** 作用* dependency* groupIdcn.hutool/groupId* artifactIdhutool-all/artifactId* version5.8.10/version* /dependency* 300,192代表长和宽 5 代表5个字符 lineCount的数字越大代表的数字越模糊 1000*/LineCaptcha lineCaptcha CaptchaUtil.createLineCaptcha(300, 192, 5, 1000);// 将验证码内容读出来String code lineCaptcha.getCode();// todo 将验证码保存到redis中redisTemplate.opsForValue().set(GRAPHIC_VERIFICATION_CODE form.getClientId(), code,15, TimeUnit.MINUTES);// 返回base64的图形验证码return lineCaptcha.getImageBase64();} }
- 上一篇: 男科治疗价目表2017织梦网站怎么做seo
- 下一篇: 男女做暧视频网站免费创意产品设计图
相关文章
-
男科治疗价目表2017织梦网站怎么做seo
男科治疗价目表2017织梦网站怎么做seo
- 技术栈
- 2026年03月21日
-
男科医院网站建设公司建设小程序怎么挂失
男科医院网站建设公司建设小程序怎么挂失
- 技术栈
- 2026年03月21日
-
男的做直播哪个网站为何网站建设公司报价不同
男的做直播哪个网站为何网站建设公司报价不同
- 技术栈
- 2026年03月21日
-
男女做暧视频网站免费创意产品设计图
男女做暧视频网站免费创意产品设计图
- 技术栈
- 2026年03月21日
-
男女做暖暖到网站庆元建设局网站
男女做暖暖到网站庆元建设局网站
- 技术栈
- 2026年03月21日
-
男女做污污的网站有什么可以接单做设计的网站
男女做污污的网站有什么可以接单做设计的网站
- 技术栈
- 2026年03月21日
