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

个人服务器搭建做网站建站工具word

个人服务器搭建做网站,建站工具word,网站建设价格对比单,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.yayakq.cn/news/858848/

相关文章:

  • 落伍者论坛 做网站深圳百度推广属于哪家公司
  • 制作网站用什么代码怎么自己创建网站免费
  • 网站建设需注意哪些事项莱州网页设计公司
  • 哪个网站可以做英文兼职建工社网校官网
  • 电子商务网站建设需求概述哈尔滨市人社app
  • 特色的南昌网站建设汽车门户网站建设
  • 自己做导航网站团购网站模板免费下载
  • 广东双语网站建设多少钱手机网站大全12345
  • 做网站为什么一定要去国外pc软件开发工具
  • 网站导航漂浮代码嘉兴seo网站推广
  • 电商网站建设与维护怎么做软文链接打开后是自定义网站
  • 都有什么网站住房和城乡建设部简称
  • 定制网站开发站长seo
  • 创建网站流程图微信网站备案
  • 怎么做动漫原创视频网站多媒体展厅公司
  • 软件用户界面设计大连网络seo公司
  • app ui设计欣赏 网站wordpress首页制作
  • 江桥网站建设企业网站建设带后台
  • wp网站搬家教程策划书怎么写
  • 搬家公司网站模板为什么做网站要用谷歌浏览器
  • 动漫网站开发需求分析建设网站的必要性
  • 游戏推广员招聘公众号关键词排名优化
  • 美食网站怎样做锅包肉wordpress建站和使用
  • 有什么网站可以做宣传外国做美食视频网站
  • 服装加盟的网站建设广东东莞直播基地
  • 网站做app有什么意义上海做网站收费
  • 旅行社销售网站建设方案济宁网站建设 田振
  • 国际网站建设招标做公司中文网站需要注意什么
  • 网站内部优化是什么专门写文章的网站
  • 手机网站建设平台注册账号怎么弄