资讯专栏INFORMATION COLUMN

短信验证

wfc_666 / 3203人阅读

摘要:在本周的项目中用到了一个手机短信验证的功能,虽然代码都是已经写好了的,自己只是拿来就用,但事后还是得学习一下思路的。

在本周的项目中用到了一个手机短信验证的功能,虽然代码都是已经写好了的,自己只是拿来就用,但事后还是得学习一下思路的。

短信验证整体思路

主要流程如下

基础功能还是比较简单的毕竟发短信用到是现成的接口,本项目用到的短信验证接口的网站是这个

  /**
     * 批量发送短信
     *
     * @param phoneNumbers
     * @param message      短信内容
     * @return 成功200 ,不成功400(短信验证错误或未传入发送手机号)
     * @throws IOException 
     */
    @Override
        public Integer sentMessage(Set phoneNumbers, String message) throws IOException {
            HttpClient client = new HttpClient();
            PostMethod post = new PostMethod(sOpenUrl);
            // 在头文件中设置转码
            post.addRequestHeader("Content-Type", ContentType);
            // 注册的用户名
            NameValuePair[] data = {new NameValuePair("action", "sendOnce"),
                    // 注册成功后,登录网站使用的密钥
                    new NameValuePair("ac", account),
                    // 手机号码
                    new NameValuePair("authkey", authkey),
                    new NameValuePair("cgid", cgid.toString()),
                    new NameValuePair("c", message),
                    new NameValuePair("m", String.join(",", phoneNumbers))}; // 设置短信内容

            post.setRequestBody(data);

            client.executeMethod(post);
            post.releaseConnection();
            return post.getStatusCode();
       }
小难点

主要的难点我认为主要就是:怎么保存已经发送的验证码并判断是否失效。
在本项目中是直接通过一个服务中的hashMap把验证码与手机号的信息直接存到内存中,毕竟本项目同时注册人数不可能太多,而几个字符串内存还是承受的住的。

        HashMap> hashMap = new HashMap<>();  // 缓存值
        String EXPIRE_DATE_KEY = "expireDate";  // 数据失效时间关键字(指在某个时间失效)
        String VALUE_KEY = "value";  // 存数据的KEY    
    
        // 存放缓存的方法
        static void put(String key, Object object, Integer expireTime) {
            HashMap hashMap = new HashMap<>();
            hashMap.put(MemoryCacheService.VALUE_KEY, object);
            hashMap.put(MemoryCacheService.EXPIRE_DATE_KEY, System.currentTimeMillis() + expireTime * 1000);
            MemoryCacheService.hashMap.put(key, hashMap);
        }

通过手机号查询验证码

    /**
     * 获取缓存
     *
     * @param key
     * @return
     */
    static Object get(String key) {
        if (MemoryCacheService.shouldClearExpiredData()) {
            logger.info("定期清除过期缓存");
            MemoryCacheService.clearExpiredData();
        }

        HashMap cachedObject = MemoryCacheService.getCachedObjectByKey(key);
        if (cachedObject == null) {
            return null;    // 未获取到缓存数据,返回null
        }

        if (MemoryCacheService.isExpired(cachedObject)) {
            logger.info("缓存过期,清除缓存.返回null");
            MemoryCacheService.remove(key);
            return null;
        }

        return cachedObjec
总结

本以为这个功能的博客能写不少,毕竟还是让我感觉很新鲜的,但真的开始才发现没啥重点可写,限制ip请求次数的功能
还写掉了,要是详细写怎么实现的感觉又没必要,毕竟逻辑实际上还是很简单的看看流程图就能理解了,就这样吧。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74482.html

相关文章

  • 目前可以用的短信验证码平台哪个比较好?

    摘要:短信验证码平台短信验证码平台哪个比较好短信验证码平台哪个好短信验证码 目前短信验证码大家应该都很熟悉了,尤其当你在一些购物网站等注册会员或者修改信息时都需要验证码。而短信验证码是商家为了降低重复注册或者非法注册,就需要短信验证码来帮忙用户的真实性。那么,目前可以用的短信验证码平台哪个比较好呢?下面就让摩杜云小杜来跟大家讲解一下吧。企业要想知道目前可以用的短信验证...

    qianfeng 评论0 收藏0
  • 永久免费的短信验证码平台是不存在的!

    摘要:短信验证码的到达率是维护用户的关键,那些号称永久免费的短信验证码平台其实是不可靠的,因为它基本不会保证到达率。摩杜云免费短信验证码平台超过试用部分每条约分钱起,具体以行业领域和客服报价为准。 短信验证码平台软件一般都是免费的,只要在摩杜云注册个账号就可以免费使用,同时还可以享受20条短信左右的试用。但后续通过平台向用户发送短信验证码是收费的,毕竟短信服务商从运营...

    bluesky 评论0 收藏0
  • 短信验证码平台有哪些比较好用?需从这3个方面来决定!

    摘要:现如今,要想分辨短信验证码平台哪些比较好用,需要从速度到达率稳定性等几个方面来决定。短信验证码平台是很讲究时效性,所以速度快到达率高是很关键的。在选择短信验证码平台的时候,一定要注意以上这些方面。 现如今,要想分辨短信验证码平台哪些比较好用,需要从速度、到达率、稳定性等几个方面来决定。短信验证码平台是很讲究时效性,所以速度快、到达率高是很关键的。另外,在选择短信...

    ckllj 评论0 收藏0
  • 手机app有了短信验证码还有没必要有图片验证码?

    摘要:以网易云易盾的验证码产品为例行为验证码具备运用大数据分析和机器学习模型进行优化升级的特点。路径可以理解为验证码展示用户行为分析机器人学习返回验证结果机器模型升级的循环,保证了网易云易盾行为式验证码的不断迭代升级。 当然有必要,这里我们来聊一个恶意短信验证的案例,通过这个案例我们就能更好理解短信验证码和图片验证码这两者的关系了。 讨论防止恶意短信验证之前,我们先来看看什么是恶意短信验证及...

    leejan97 评论0 收藏0
  • 本机号码认证黑科技:极光(JG)开发者服务推出“极光认证”新产品

    摘要:近日,中国领先的大数据服务商极光推出全新产品极光认证。极光认证的诸多优势以及试用企业的好评反馈,充分证明了极光认证这一全新认证方式的市场前景。在注册登陆及二次验证等场景,极光认证或将成为新一代主流认证方式。 近日,中国领先的大数据服务商极光(JG)推出全新产品——极光认证JVerification。极光认证是极光针对APP用户注册登陆,二次安全验证等身份验证场景打造的一款本机号码认证S...

    HtmlCssJs 评论0 收藏0
  • Laravel SMS 短信发送包

    摘要:支持短信验证码未验证时,用户再次请求验证码,在有效分钟内验证码保持一致。集成短信发送路由,支持和发送方式。有效期为分钟,请尽快验证。 Laravel Sms Laravel 贴合实际需求同时满足多种通道的短信发送组件 showImg(https://segmentfault.com/img/remote/1460000013101233);showImg(https://segment...

    Seay 评论0 收藏0

发表评论

0条评论

wfc_666

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<