springboot中邮箱验证按钮实现60秒后可重新获取(可防刷新)以及防重复发送

摘要:
接下来我会写一个微信小程序的系列博客,小菜鸟不才,欢迎大家指正,一起加油和进步!

在上一篇文章springboot注册功能中邮箱验证的实现中(文章链接:https://www.cnblogs.com/mmimo/p/13234969.html),我们已经完成了最基本的邮箱验证功能,现在我们来完善一下它,给它增加一个60秒后才能重新发送的功能

springboot中邮箱验证按钮实现60秒后可重新获取(可防刷新)以及防重复发送第1张

这个实现并不难,我们现在先来理一下思路:当用户点击发送后,按钮变成不可点击,并且开始倒计时,当倒计时结束后,按钮变回可点击,并且按钮上的文字变回“获取验证码”

上篇文章,我们写的html中对应的“获取验证码”的按钮的id为getcode

springboot中邮箱验证按钮实现60秒后可重新获取(可防刷新)以及防重复发送第2张

基本的实现代码如下:

var count = 60;
var resend = setInterval(function(){
count--;
if (count > 0){
btn.val(count+"秒后可重新获取");
}else {
clearInterval(resend);
btn.val("获取验证码").removeAttr('disabled style');
}
}, 1000);
btn.attr('disabled',true).css('cursor','not-allowed');

实现效果如下:

springboot中邮箱验证按钮实现60秒后可重新获取(可防刷新)以及防重复发送第3张

springboot中邮箱验证按钮实现60秒后可重新获取(可防刷新)以及防重复发送第4张

可是到这里还没有结束,因为当用户只要刷新一下,用户就又可以获取验证码了,所以我们还要有一个防刷新的机制,因此我们可以利用cookie

代码如下:

 /*防刷新:检测是否存在cookie*/
        if($.cookie("captcha")){
            var count = $.cookie("captcha");
            var btn = $('#getcode');
            btn.text(count+'秒后可重新获取').attr('disabled',true).css('cursor','not-allowed');
            var resend = setInterval(function(){
                count--;
                if (count > 0){
                    btn.val(count+'秒后可重新获取').attr('disabled',true).css('cursor','not-allowed');
                    $.cookie("captcha", count, {path: '/', expires: (1/86400)*count});
                }else{
                    clearInterval(resend);
                    btn.val("获取验证码").removeClass('disabled').removeAttr('disabled style');
                }
            }, 1000);
        }

(这代码网络上其他大佬已经发过了,我是模仿他们的)

总代码如下:(当用户点击按钮后,让按钮变为不可点击;以及在页面刷新后,先判断cookie中有没有存入count,有的话,将按钮变为不可点击)

$(function(){
        /*防刷新:检测是否存在cookie*/
        if($.cookie("captcha")){//判断cookie存不存在
            var count = $.cookie("captcha"); //从cookie中取出count
            var btn = $('#getcode');
            btn.text(count+'秒后可重新获取').attr('disabled',true).css('cursor','not-allowed');
            var resend = setInterval(function(){
                count--;
                if (count > 0){
                    btn.val(count+'秒后可重新获取').attr('disabled',true).css('cursor','not-allowed'); //把count保存到cookie中
                    $.cookie("captcha", count, {path: '/', expires: (1/86400)*count});
                }else{
                    clearInterval(resend);
                    btn.val("获取验证码").removeClass('disabled').removeAttr('disabled style');
                }
            }, 1000);
        }

        /*点击改变按钮状态,已经简略掉ajax发送短信验证的代码*/$('#getcode').click(function(){

            //利用ajax发送验证码...(代码已省略,上篇文章有)
           var btn = $(this);
            var count = 60;

            var resend = setInterval(function(){
                count--;
                if (count > 0){
                    btn.val(count+"秒后可重新获取");
                    /*将count存入cookie中 */$.cookie("captcha", count, {path: '/', expires: (1/86400)*count});
                }else{
                    clearInterval(resend);
                    btn.val("获取验证码").removeAttr('disabled style');
                    }
                }, 1000);
                btn.attr('disabled',true).css('cursor','not-allowed');


        });

    });

由此,我们的邮箱验证功能全部完成!(看到上面重复的代码,我们很自然会想到提取公共方法,以免代码冗余,这个工作就交给你们啦)

接下来我会写一个微信小程序的系列博客,小菜鸟不才,欢迎大家指正,一起加油和进步!

免责声明:文章转载自《springboot中邮箱验证按钮实现60秒后可重新获取(可防刷新)以及防重复发送》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇VSS使用手册(转)TinyFrame升级之十:WCF Rest Service注入IOC的心下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

http 带cookie值的get请求(关联测试)

本文主要包含一下五点。 1、如何get请求如何获取cookie信息。 getCookieStore() 2、如何发送带cookie信息的get 请求。setCookieStore() 3、testng依耐测试,带cookie信息的get请求需要依耐于获取cookie信息的请求。 @Test(dependsOnMethods = {"getTestCooki...

cookies

Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久...

python获取cookie的方法

介绍下3种获取cookie的方法。 (1)借助handler 这种方法也是网上介绍最多的一种方法,但是用起来比较麻 fromhttpimportcookiejarfrom urllib importrequest classCraw(): def __init__(self): self.url = '' se...

ASP.NET Core [4]: Authentication(笔记)

原文连接:http://www.cnblogs.com/RainingNight/p/authentication-in-asp-net-core.html 在现代应用程序中,认证已不再是简单的将用户凭证保存在浏览器中,而要适应多种场景,如App,WebAPI,第三方登录等等。在 ASP.NET 4.x 时代的Windows认证和Forms认证已无法满足现...

SpringBoot配置属性之Server参数

server配置server.address指定server绑定的地址 server.compression.enabled是否开启压缩,默认为false. server.compression.excluded-user-agents指定不压缩的user-agent,多个以逗号分隔,默认值为:text/html,text/xml,text/plain,t...

CAS单点登录

1.      CAS 简介 1.1.  What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(属于 Web SSO )。 CAS 开始于 2001 年, 并在 2004 年 12 月正式成为 JA...