zoukankan      html  css  js  c++  java
  • view+element+java登陆验证码

    一、前端:

    1、页面标签:

    <el-row :gutter="20">
                                        <el-col :span="24">
                                            <el-input  v-model="loginForm.verificationCode" placeholder="请输入验证码" @focus="resetValidate('verificationCodeMsg')"
                                                       prefix-icon="iconfont icon-yanzhengma" @keyup.enter.native="submitForm('loginForm')" auto-complete="off" type="text">
                                                <img slot="suffix" :src="captchaUrl" class="verificationCode" @click="changeCaptchaUrl"></img>
                                            </el-input>
                                        </el-col>
                                    </el-row>

    2、js代码:

    data{
    loginForm: {
                userId: '',
                password: '',
                verificationCode:''
            },
            loginRule: {
                userId: [
                    {validator: validateuserid, trigger: 'blur'}
                ],
                password: [
                    {validator: validatePassword, trigger: 'blur'}
                ],
                verificationCode:[
                    {validator: validateVerificationCode, trigger: 'blur'}
                ]
            },
    captchaUrl:'/captcha/getCaptcha'
    }

    几个js方法:

    resetValidate: function (msgKey) {
                if(this[msgKey] != ''){
                    this[msgKey] = '';
                    this.$refs['loginForm'].clearValidate();
                }
            },
            changeCaptchaUrl:function(){
                this.captchaUrl='/captcha/getCaptcha?timestamp=' + new Date().getTime()
            },
    
    提交表单ajax请求参数中:
    "captchaCode":self.loginForm.verificationCode,

    function validateVerificationCode(rule, value, callback) {
    if (value === '') {
    callback(new Error('请输入验证码'));
    }else {
    callback();
    }
    }

     二、java代码:

    ajax请求的后台:

    @RequestMapping(value = "/verifyId")
        @ResponseBody
        public JsonResult<Object> verifyId(String p,HttpServletRequest request) {
    JsonResult<Object> json = JsonResult.getFailureResult(true);
            String jsonStr=RSAEncryptUtils.decrypt(p);
            JSONObject jsonObject=JSONObject.parseObject(jsonStr);
            String randomStringSession=(String)request.getSession(true).getAttribute("randomString");
            int loginNumInt = 0;
            if(jsonObject.getString("loginNum")!= null && jsonObject.getString("loginNum")!=""){
                loginNumInt = Integer.parseInt(jsonObject.getString("loginNum"));
                // 错误三次及以上要验证码
                if(loginNumInt >= 3 && !randomStringSession.equalsIgnoreCase(jsonObject.getString("captchaCode"))){
                    json.setSuccess(false);
                    json.setMsg("验证码错误");
                    return json;
                }
            }
    
    }
  • 相关阅读:
    数组和排序算法(冒泡、选择、插入排序)
    异常
    线程的五个状态,sleep和wait
    ArrayList、Vector、LinkedList
    String,StringBuffer,StringBuilder的区别
    Math.round(),Math.ceil(),Math.floor()的区别
    单例模式之双重锁模式、静态内部类模式、饿汉模式、懒汉模式,和安全的懒汉模式
    工厂模式简单的汽车工厂
    存储过程的优点
    数据库SQL特点数据查询,数据操纵,数据定义,数据控制,建立索引, 事务acid,数据库隔离级别
  • 原文地址:https://www.cnblogs.com/wmqiang/p/11142964.html
Copyright © 2011-2022 走看看