当前位置: 首页 > 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/187009/

相关文章:

  • 作品集的个人网站怎么做直播app开发一个需要多少钱
  • 网站上传权限问题ios wordpress连接站点
  • 十大免费跨境网站网站建设与网页制作论文
  • 淮安那家公司做网站提交网站到百度
  • 网站设计交流wordpress sticky_posts
  • 胶州市网站建设策划运营主要做什么
  • 部分网站建设管理不规范wordpress伪静态iis7
  • 枣庄高端网站定制河南省住房与建设注册中心网站
  • 云南公路建设市场网站商城网站建设相关费用
  • 做网站需要备案几次十堰微网站建设
  • 外贸网站建设网比较好的建站网站
  • 外网服装设计网站宜黄县建设局网站
  • 网站权重划分wordpress+左侧导航
  • 怎样建官方网站公司注册网上核名官网
  • 杭州公司网站制作维护精准客户数据采集软件
  • 网站备案 上一级服务商名称苏州做网站建设公司
  • 公司网站域名费用怎么交有没有网站学做总结
  • 免费发布信息网站大全注册宝塔网站建设教程
  • 黄江建设网站最火网站排名
  • 宜昌 医院 网站建设静态网页设计作业成品
  • 四川润邦建设工程设计有限公司网站做排名的网站
  • 网站建设案例分析做选择的网站首页
  • 青浦网站招营业员做一休一网络推广平台哪个好
  • 中国建设银行网站用户是什么搜索推广是什么
  • 手机网站开发环境天猫建设网站的意义
  • 网站怎样做wap端搜索引擎优化涉及到内容
  • 永康企业网站建设公司网站管理系统图片
  • 问答社交网站开发网站数据库建设计划书
  • 买软件网站建设如何做好外贸网站建设
  • 怎样自己做网站赚钱吗企业网站制作心得