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

旅游网站开发网站设计报告书百度一下网页版

旅游网站开发网站设计报告书,百度一下网页版,软件开发公司排行榜前十名,wordpress用户访问频率图片验证码在注册、登录、交易、交互等各类场景中都发挥着巨大作用,能够防止操作者利用机器进行暴力破解、恶意注册、滥用服务、批量化操作和自动发布等行为。 创建一个实体类封装,给前端返回的验证码数据: Data public class ValidateCodeV…

图片验证码在注册、登录、交易、交互等各类场景中都发挥着巨大作用,能够防止操作者利用机器进行暴力破解、恶意注册、滥用服务、批量化操作和自动发布等行为。

在这里插入图片描述
创建一个实体类封装,给前端返回的验证码数据:

@Data
public class ValidateCodeVo {private String codeKey ;        // 验证码的keyprivate String codeValue ;      // 图片验证码对应的字符串数据}

业务层代码实现:

public interface ValidateCodeService {// 获取验证码图片public abstract ValidateCodeVo generateValidateCode();}
@Service
public class ValidateCodeServiceImpl implements ValidateCodeService {@Autowiredprivate RedisTemplate<String , String> redisTemplate ;@Overridepublic ValidateCodeVo generateValidateCode() {// 使用hutool工具包中的工具类生成图片验证码//参数:宽  高  验证码位数 干扰线数量CircleCaptcha circleCaptcha = CaptchaUtil.createCircleCaptcha(150, 48, 4, 20);String codeValue = circleCaptcha.getCode();String imageBase64 = circleCaptcha.getImageBase64();// 生成uuid作为图片验证码的keyString codeKey = UUID.randomUUID().toString().replace("-", "");// 将验证码存储到Redis中redisTemplate.opsForValue().set("user:login:validatecode:" + codeKey , codeValue , 5 , TimeUnit.MINUTES);// 构建响应结果数据ValidateCodeVo validateCodeVo = new ValidateCodeVo() ;validateCodeVo.setCodeKey(codeKey);validateCodeVo.setCodeValue("data:image/png;base64," + imageBase64);// 返回数据return validateCodeVo;}}

在Controller中添加获取验证码接口方法:

@Autowired
private ValidateCodeService validateCodeService;@GetMapping(value = "/generateValidateCode")
public Result<ValidateCodeVo> generateValidateCode() {ValidateCodeVo validateCodeVo = validateCodeService.generateValidateCode();return Result.build(validateCodeVo , ResultCodeEnum.SUCCESS) ;
}

在登录的业务层实现验证码校验:

 /*** 用户登录* @param loginDto* @return*/@Overridepublic LoginVo login(LoginDto loginDto) {//获取输入的验证码和存储到redis的key名称String captcha = loginDto.getCaptcha();String key = loginDto.getCodeKey();//根据获取的redis的key 查询redis里面存储的验证码String redisCode = redisTemplate.opsForValue().get("user:validate" + key);// 比较输入的和redis存储验证码是否一致if(StrUtil.isEmpty(redisCode) || !StrUtil.equalsIgnoreCase(redisCode,captcha)){//提示用户,校验失败throw new GuiguException(ResultCodeEnum.VALIDATECODE_ERROR);}// 如果一致,删除redis里面验证码redisTemplate.delete("user:validate" + key);// 1.获取提交的用户名String userName = loginDto.getUserName();// 2.根据用户名查询用户表SysUser sysUser = sysUserMapper.selectUserInfoByUserName(userName);// 3.如果根据用户名查不到对应的信息,用户不存在,返回错误信息if(sysUser == null){//throw new RuntimeException("用户名不存在");throw new GuiguException(ResultCodeEnum.LOGIN_ERROR);}// 4.根据用户名查询用户信息,用户存在// 5.获取输入的密码,比较输入的密码和数据库的密码是否一致String database_assword = sysUser.getPassword();// 把输入的密码进行加密 再比较数据库的密码String input_password = DigestUtils.md5DigestAsHex(loginDto.getPassword().getBytes());//比较if(!input_password.equals(database_assword)){
//            throw new RuntimeException("密码不正确");throw new GuiguException(ResultCodeEnum.LOGIN_ERROR);}// 6.如果密码一致,登陆成功,如果你密码不一致登陆失败// 7.登陆成功,生产用户的唯一标识tokenString token = UUID.randomUUID().toString().replaceAll("-", "");// 8.把登陆成功的用户信息放到redis里面// key:token value:用户信息redisTemplate.opsForValue().set("user:login"+token,JSON.toJSONString(sysUser),7, TimeUnit.DAYS);// 9.返回loginvo对象LoginVo loginVo = new LoginVo();loginVo.setToken(token);return loginVo;}
http://www.shuangfujiaoyu.com/news/31464.html

相关文章:

  • 怎样下载模板做网站a站
  • 穿着高跟鞋做的网站百度提交网站收录查询
  • 临沂做网站好的公司网络营销的特点
  • 网站建设好吗网络广告形式
  • 昆明室内设计学校页面优化算法
  • 武汉教育网站建设公司百度学术官网首页
  • 网页设计与网站建设教材数字营销平台有哪些
  • 网页设计个人网站怎么做成年学校培训班
  • 做网站还有用seo效果分析
  • 建设信用卡银行积分商城网站竞价推广遇到恶意点击怎么办
  • 万网官方网站温岭网络推广
  • dw怎样做收藏本网站推广资讯
  • wordpress 页面类型seo专员工资一般多少
  • 婚纱网站模板百度大数据分析工具
  • 中国建设银行网站会员注册信息补充百度小程序优化
  • 微信官方网站下载外贸网站建设流程
  • 二级域名做网站百度宣传广告要多少钱
  • 数码b2c网站网站如何进行seo
  • 长沙网站建设服务公司优帮云查询数据云查询
  • 龙岗政府在线区住房和建设局子网站安徽网站seo公司
  • 洛阳东翔科技做的网站最新的全国疫情
  • 网站建设案例实录2024年3月份病毒会爆发吗
  • 衡水做网站价格泰州seo网站推广
  • 番禺做网站开发全网营销系统1700元真实吗
  • 保康县城乡建设路网站百度搜索引擎怎么弄
  • 和田网站制作seo推广服务
  • 济南手工网站建设公司营销培训内容有哪些
  • 如何做网站数据分析百度官网客服
  • wordpress网站映射抓取关键词的软件
  • 安卓app开发框架最新seo操作