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

响应式网站报价建立网站请示

响应式网站报价,建立网站请示,营业推广是一种什么样的促销方式,沧州市网站建设图片验证码在注册、登录、交易、交互等各类场景中都发挥着巨大作用,能够防止操作者利用机器进行暴力破解、恶意注册、滥用服务、批量化操作和自动发布等行为。 创建一个实体类封装,给前端返回的验证码数据: 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.yayakq.cn/news/951212/

相关文章:

  • 网站管理人员为什麼建网站要先做数据库
  • 承德做网站网站开发确认函
  • 手机好看网站模板免费下载郑州网站高端网站设计
  • 江苏省建设工程网站系统房山区文化活动中心有wifi吗
  • 业务宣传网站建设网站上有什么作用
  • 南昌网站建设大全wordpress提交友情链接
  • 企业网站备案好不好做设计的软件
  • WordPress套如何提升seo
  • 抚州建站速建网站哪里有国内网站建设公司
  • 网站建设的工作职责企业网站设计营销
  • 网站用户账号ip查询做php网站教程
  • o2o网站建设最好公司建网站需要的费用
  • 如何做网站后台妇联网网站建设工作
  • 沣东新城开发建设集团有限公司网站福田专业做网站公司
  • 做实验教学视频的网站科技网站排名
  • asp网站后台下载电子商务网站建设与管理的实践报告
  • 台州做网站公司三亚网站运营托管介绍
  • 重庆大足网站制作公司推荐宝塔和WordPress一样吗
  • 公司网站建设基本流程广州做网站专业公司
  • 网站图片管理系统深圳的建设工程信息网
  • 网站推广服务报价表wordpress怎么改中文
  • 福田住房和建设局网站织梦建站教程下载
  • 举报网站怎么做公司网站制作应该注意些什么
  • 在线销售型网站产品dw自己做网站需要什么意思
  • 可以接单做3d网站西安网站seo诊断
  • 需要优化的网站有哪些wordpress 查看原图
  • 免费网站建设方案google 字体 wordpress
  • 网站商城建设价格航空总医院医院网站建设招标网站
  • 大型网站开发方案天津谁做网站
  • 金融企业网站建设公司哈尔滨住房和城乡建设局网站