手机验证码校验

作者: 织梦少年666 | 来源:发表于2019-05-10 14:24 被阅读0次

后台管理员通过手机号获取验证码登陆,每天只有3次机会

直接上代码

获取短信验证码,先判断该手机号是否在数据库中,是否禁用状态,发送成功后存入redis,过期时间为5分钟,保证只有最新的验证码是有效的
@PostMapping("/open/getVerification")
    @ApiOperation(value = "获取验证码")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "phone", value = "手机号", required = true, dataType = "String", paramType = "query"),
    })
    public Results.Result getVerification(String phone) {
        AgencyProjectExample agencyProjectExample = new AgencyProjectExample();
        agencyProjectExample.createCriteria().andPhoneEqualTo(phone);
        List<AgencyProject> agencyProject = agencyProjectService.selectByExample(agencyProjectExample);
        if (agencyProject == null) {
            return Results.AGENCY_PROJECT_MORE;
        } else {
            if(agencyProject.get(0).getState() == 0){
                return new Results.Result(500,"您的账号已被禁用");
            }
            String code = VerifyCodeUtils.generateVerifyNumber(6);
            int i = YunPianSendMsg.sendCaptcha(code, phone, 5);
            if (i == -1) {
                return Results.AGENCY_PROJECT_SEND;
            } else {
                redisService.delete(phone);//重新获取验证码得先删除之前的验证码信息 在添加 只能保证只有最新的验证码有效
                redisService.save(phone, code, 300);//获取的验证码存入redis 过期时间5分钟
                return Results.SUCCESS;
            }
        }
    }
默认登陆错误次数是0,每次错误+1,过期时间为12小时,当次数大于等于3时,提示账号错误次数过多,请明天尝试。每次错误会提示,您还剩下几次登陆机会
@PostMapping("/open/projectLogin")
    @ApiOperation(value = "项目方登陆")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "phone", value = "手机号", required = true, dataType = "String", paramType = "query"),
            @ApiImplicitParam(name = "code", value = "短信验证码", required = true, dataType = "String", paramType = "query")
    })
    public Results.Result projectLogin(String phone, String code) {
        if (phone == null || code == null) {
            return Results.PARAMETER_INCORRENT;
        }
        String key = RedisKeyUtil.projectErrorLoginOfPhone(phone);
        Object obj = redisService.select(key);
        if (obj == null) {
            obj = "0";
        }
        int errorCount = Integer.parseInt(obj.toString());
        if (errorCount >= 3) {
            return Results.AGENCY_PROJECT_ERROR;
        }
        AgencyProjectExample agencyProjectExample = new AgencyProjectExample();
        agencyProjectExample.createCriteria().andPhoneEqualTo(phone);
        List<AgencyProject> agencyProject = agencyProjectService.selectByExample(agencyProjectExample);
        int count = 2 - errorCount;
        if (agencyProject == null) {
            if(count == 0){
                return Results.AGENCY_PROJECT_ERROR;
            }
            redisService.save(key,++errorCount,60 * 60 * 12);
            return new Results.Result(500,"手机号错误,您今天还剩"+count+"机会");
        } else {
            if(agencyProject.get(0).getState() == 0){
                return new Results.Result(500,"您的账号已被禁用");
            }
            String redisCode = redisService.select(phone);//redis存入的验证码
            if (redisCode.equals(code)) {
                return Results.SUCCESS;
            } else {
                if(count == 0){
                    return Results.AGENCY_PROJECT_ERROR;
                }
                redisService.save(key,++errorCount,60 * 60 * 12);
                return new Results.Result(500,"验证错误,您今天还剩"+count+"机会");
            }
        }
    }

相关文章

  • Redis 应用场景

    手机验证码场景 redis里面存储过期时间。通过校验redis里面存储的值来校验验证码是否过期或者是否正确。 校验...

  • Django项目用户注册功能(三)

    一、获取短信验证码 1.业务流程分析 校验手机号码 校验图形验证码 校验有效时间内有送记录 生成短信验证码 发送短...

  • Django项目用户注册功能(完)

    一、注册功能(完) 1.业务流程分析 对校验进行校验校验用户名校验密码校验手机号码校验短信验证码 新建数据库记录 ...

  • Android 小技巧之 Login

    知识点: 手机号 验证码 密码 1. 手机号 xml: 校验: 2. 验证码 3. 密码 xml: toggle_...

  • 手机验证码校验

    后台管理员通过手机号获取验证码登陆,每天只有3次机会 直接上代码 获取短信验证码,先判断该手机号是否在数据库中,是...

  • PHP之验证码制作

    php实现字母验证码 php通过session存储验证信息 验证码通过表单提交、校验 使用js实现动态校验验证码

  • 【微信小程序】获取验证码60s倒计时

    验证码倒计时,手机号格式校验。 【简要说明】code字段在获取验证码之前显示验证码,点击获取验证码后显示倒计时数字...

  • 2017.9.7登陆流程总结

    登陆校验:输入用户名密码、点击发送验证码,输入验证码,点击登陆,校验全部正确则登陆成功。点击获取验证码需要校验1、...

  • Restful风格的验证码

    Restful风格的验证码 Restful风格的验证码 接口生成验证码接口信息前端显示校验接口信息前端校验 移动端...

  • 项目功能点总结

    一、登录注册 用户注册 手机号验证 格式校验(正则表达式) 唯一性校验(查询数据库手机号是否存在) 短信验证码 发...

网友评论

    本文标题:手机验证码校验

    本文链接:https://www.haomeiwen.com/subject/nbkaoqtx.html