Vue implementiert die Anmeldung per Mobiltelefon-Bestätigungscode

Vue implementiert die Anmeldung per Mobiltelefon-Bestätigungscode

In diesem Artikel wird der spezifische Code von Vue zur Implementierung der Anmeldung per Handy-Verifizierungscode zu Ihrer Information bereitgestellt. Der spezifische Inhalt ist wie folgt

Bestätigungscode

<Vorlage>
  <div>
    <el-main>
      <el-form :model="ruleForm" :rules="Regeln" ref="ruleForm" label-width="100px" class="demo-ruleForm">
        <el-form-item label="Mobiltelefonnummer" prop="Telefon">
          <el-input v-model="ruleForm.phone" placeholder="Bitte geben Sie Ihre Telefonnummer ein" size=""
                    maxlength="11"></el-input>
        </el-form-item>

        <el-form-item label="Bestätigungscode" prop="code">
          <el-Zeile :span="24">
            <el-col :span="12">
              <el-input v-model="ruleForm.code" auto-complete="off" placeholder="Bitte geben Sie den Bestätigungscode ein" size=""
                        maximale Länge = "4"
                        @keyup.enter.native="submitForm('ruleForm')"></el-input>
            </el-col>
            <el-col :span="12">
              <div Klasse="Anmeldecode">
                <!--Bestätigungscode-Komponente-->
                <el-button @click="getCode()" :class="{'disabled-style':getCodeBtnDisable}"
                           :deaktiviert="getCodeBtnDisable">{{ codeBtnWord }}
                </el-button>
              </div>
            </el-col>
          </el-row>
        </el-form-item>

        <!--Gleitende Überprüfungskomponente-->
        <Überprüfen></Überprüfen>

        <el-form-item>
          <el-button type="primary" @click="submitForm('ruleForm')">Anmelden</el-button>
        </el-form-item>
      </el-form>

    </el-main>
  </div>
</Vorlage>

Verwendete Vue-Verifizierungstool-Klasse

Standard exportieren {
  // Beschränken Sie die Eingabe auf Zahlen (zwei Dezimalstellen können eingegeben werden)
  limitEingabePunktZahl(Wert) {
    wenn (val === 0 || val === "0" || val === "" || val === undefiniert) {
      zurückkehren "";
    } anders {
      lass Wert = null;
      value = val.replace(/[^\d.]/g, ""); // Alle Zeichen außer "number" und "." löschen value = value.replace(/\.{2,}/g, ​​​​"."); // Nur das erste behalten. Alle zusätzlichen Zeichen löschen value = value
        .replace(.", "$#$")
        .replace(/\./g, "")
        .replace("$#$", ".");
      value = value.replace(/^(-)*(\d+)\.(\d\d).*$/, "$1$2.$3"); // Es können nur zwei Dezimalstellen eingegeben werden. Rückgabewert;
    }
  },

  handleRouteToArray(route) {
    const-Übereinstimmungen = route.path.split('/')
    Übereinstimmungen.Shift()
    lass newMatch = []
    Übereinstimmungen.map((item, i) => {
      wenn (entspricht[i - 1]) {
        Element = neuesMatch[i - 1] + '/' + Element
      }
      newMatch.push(Element)
    })
    neuesMatch = neuesMatch.map(item => {
      gibt `/${item}` zurück
    })
    returniere neuesMatch
  },

  // Das Passwort muss mindestens 8 Zeichen lang sein und drei beliebige Großbuchstaben, Kleinbuchstaben, Zahlen und Sonderzeichen enthalten testPassWord: function (str) {
    var rC = {
      lW: '[az]',
      uW: '[AZ]',
      nW: '[0-9]',
      sW: '[\\u0020-\\u002F\\u003A-\\u0040\\u005B-\\u0060\\u007B-\\u007E]'
    }
    Funktion Reg (str, rStr) {
      var reg = neuer RegExp(rStr)
      wenn (reg.test(str)) true zurückgibt
      sonst gibt „false“ zurück
    }
    wenn (Zeichenfolgelänge < 8) {
      return false
    } anders {
      var tR = {
        l: Reg(str, rC.lW),
        u: Reg(str, rC.uW),
        n: Reg(str, rC.nW),
        s: Reg(str, rC.sW)
      }
      wenn ((tR.l && tR.u && tR.n) || (tR.l && tR.u && tR.s) || (tR.s && tR.u && tR.n) || (tR.s && tR.l && tR.n)) {
        // document.title = "Das Passwort erfüllt die Anforderungen"
        returniere wahr
      } anders {
        return false
      }
    }
  },

  // Passwortüberprüfung 8-30 Zeichen pwdReg: /^([0-9a-zA-Z]|(?:&)|(?:~)|(?:!)|(?:@)|(?:#)|(?:\$)|(?:%)|(?:\^)|(?:\*)){8,30}$/,

  // Telefonnummernverifizierung phoneReg: /^1[3|4|5|6|7|8][0-9]{9}$/,

  // Geld formatieren formatUSD (val, currency) {
    wenn (val === '' || val === '--' || val === undefiniert) {
      zurückkehren '--'
    }
    // Zuerst feststellen, ob die Daten einen Dezimalpunkt haben let newVal = String(Number(val).toFixed(2))
    // Konvertiere wissenschaftliche Notation in normale String-Anzeige if (newVal.includes('e+')) {
      neuerWert = Zahl(neuerWert).toLocaleString()
      neuerWert = this.unFormatAmount(neuerWert)
    }
    let dotIdx = newVal.lastIndexOf('.')
    let dotVal = '.00' // Behalte die Daten nach dem Dezimalpunkt if (dotIdx >= 0) {
      dotVal = neuerVal.substr(dotIdx, neuerVal.Länge)
      neuerWert = neuerWert.slice(0, dotIdx)
    }

    lass len = newVal.length
    lass arr = []
    let lastIndex = null
    während (Länge > 0) {
      letzterIndex = Länge
      Länge -= 3
      arr.unshift(neuerWert.substring(Länge, letzterIndex))
    }
    Wert = arr.join(',')

    if (Währung) {
      neuerWert = `${currency} ${val}${dotVal}`
    } anders {
      // neuerWert = `$ ${val}${dotVal}`
      newVal = `¥ ${val}${dotVal}` // Standard ist RMB}
    returniere neuenWert
  },

  // Formatieren Sie den Betrag ohne Dezimalstellen, Betragssymbole usw. Geben Sie eine Ganzzahl ein formatAmount (val) {
    wenn (val === '' || val === '--' || val === undefiniert) {
      zurückkehren '--'
    }
    wenn (Wert === 0 || Wert === '0') {
      Rückgabe 0
    }
    // Zuerst feststellen, ob die Daten einen Dezimalpunkt haben let newVal = String(val)
    let dotIdx = newVal.lastIndexOf('.')
    let dotLength = 0
    wenn (newVal.split('.').Länge > 1) {
      Punktlänge = newVal.split('.')[1].Länge
    }
    let dotVal = '' // Behalte die Daten nach dem Komma if (dotIdx >= 0) {
      neuerWert = String(Zahl(Wert).toFixed(5))
      dotVal = newVal.substr(dotIdx, dotLength + 1)
      neuerWert = neuerWert.slice(0, dotIdx)
    }
    lass len = newVal.length
    lass arr = []
    let lastIndex = null
    während (Länge > 0) {
      letzterIndex = Länge
      Länge -= 3
      arr.unshift(neuerWert.substring(Länge, letzterIndex))
    }
    Wert = arr.join(',')
    wenn (dotVal.length < 2) {
      dotVal = ''
    }
    Rückgabewert + Punktwert
  },

  // Bestimmen, ob die Daten leer sind isEmptyVal (val) {
    wenn (val === undefiniert || val === '') {
      zurückkehren '--'
    } anders {
      Rückgabewert
    }
  },

    // Formatieren Sie Jahr, Monat, Tag vom Typ: Chinesischer Anzeigemodus (ch) und Spleißmodus // Hinweis: Der chinesische Anzeigemodus wird nur benötigt, wenn Parameter über die Schnittstelle übergeben werden, andernfalls ist es das amerikanische Format YMD (jetzt Typ = "ch") {
    wenn (!jetzt || jetzt === 'null' || jetzt === '--' || jetzt === undefiniert) {
      zurückkehren '--'
    }
    wenn (Nummer(jetzt)) {
      jetzt = neues Datum(jetzt)
    }
    // Kompatibel mit IE-Browser, JJ-MM-TT-Format if (typeof now === 'string' && now.includes('-')) {
      jetzt = dies.NeuesDatum(jetzt)
    }
    wenn (jetzt) ​​{
      lass Jahr = ''
      let Monat = ''
      let Datum = ''
      // Die 8 Bits werden hier verwendet, um ein Format wie 20180423 zurückzugeben, wenn (String(now).length === 8 && String(now).indexOf('-') === -1 && String(now).indexOf('/') === -1) {
        const getNow = String(jetzt)
        gibt `${getNow.substring(4, 6)}/${getNow.substring(6, 8)}/${getNow.substring(0, 4)}` zurück
      } anders {
        jetzt = neues Datum(jetzt)
        jahr = jetzt.getFullYear()
        Monat = jetzt.getMonth() + 1
        Datum = jetzt.getDate()
      }
      wenn (Monat < 10) {
        Monat = `0${month}`
      }
      wenn (Datum < 10) {
        Datum = `0${date}`
      }
      wenn (Typ === 'ch') {
        gibt `${year}-${month}-${date}` zurück
      } sonst wenn (Typ) {
        gibt `${Jahr}${Typ}${Monat}${Typ}${Datum}` zurück
      } anders {
        gibt `${Monat}/${Datum}/${Jahr}` zurück
      }
    } anders {
      zurückkehren ''
    }
  },

  // Zeit formatieren: Jahr, Monat, Tag, Stunde, Minute, Sekunde formatDate (jetzt, Typ) {
    if (!now || jetzt === 'null' || jetzt === '--' || jetzt === undefiniert) {
      zurückkehren '--'
    }
    wenn (jetzt) ​​{
      jetzt = neues Datum(jetzt)
      lass jahr = jetzt.getFullYear()
      lass Monat = jetzt.getMonth() + 1
      let date = jetzt.getDate()
      let Stunde = jetzt.getHours()
      let minute = jetzt.getMinutes()
      lass Sekunde = jetzt.getSeconds()
      wenn (Monat < 10) {
        Monat = `0${month}`
      }
      wenn (Datum < 10) {
        Datum = `0${date}`
      }
      if (Stunde < 10) {
        Stunde = `0${Stunde}`
      }
      if (Minute < 10) {
        Minute = `0${Minute}`
      }
      wenn (Sekunde < 10) {
        Sekunde = `0${Sekunde}`
      }
      if (Typ) {
        returniere `${Monat}/${Datum}/${Jahr} ${Stunde}:${Minute}:${Sekunde}`
      } anders {
        gibt `${Monat}-${Datum}-${Jahr}` zurück
      }
    } anders {
      zurückkehren ''
    }
  },
}

Geben Sie einfach die vollständige Version ein, damit sie leichter zu lesen ist.

<Vorlage>
  <div>
    <el-main>
      <el-form :model="ruleForm" :rules="Regeln" ref="ruleForm" label-width="100px" class="demo-ruleForm">
        <el-form-item label="Mobiltelefonnummer" prop="Telefon">
          <el-input v-model="ruleForm.phone" placeholder="Bitte geben Sie Ihre Telefonnummer ein" size=""
                    maxlength="11"></el-input>
        </el-form-item>

        <el-form-item label="Verifizierungscode" prop="code">
          <el-Zeile :span="24">
            <el-col :span="12">
              <el-input v-model="ruleForm.code" auto-complete="off" placeholder="Bitte geben Sie den Bestätigungscode ein" size=""
                        maximale Länge = "4"
                        @keyup.enter.native="submitForm('ruleForm')"></el-input>
            </el-col>
            <el-col :span="12">
              <div Klasse="Anmeldecode">
                <!--Bestätigungscode-Komponente-->
                <el-button @click="getCode()" :class="{'disabled-style':getCodeBtnDisable}"
                           :deaktiviert="getCodeBtnDisable">{{ codeBtnWord }}
                </el-button>
              </div>
            </el-col>
          </el-row>
        </el-form-item>

        <!--Gleitende Überprüfungskomponente-->
        <Überprüfen></Überprüfen>

        <el-form-item>
          <el-button type="primary" @click="submitForm('ruleForm')">Anmelden</el-button>
        </el-form-item>
      </el-form>

    </el-main>
  </div>
</Vorlage>

<Skript>
//Tool-Klasse importieren import Verify from "@/components/Verify";
Ereignis aus „../utils/event“ importieren
importiere common von "@/utils/common";

lass Parameter;
Standard exportieren {
  Name: "LoginIphone",
  Komponenten: {Überprüfen},
  Daten() {
    //Verwenden Sie reguläre Ausdrücke, um die Telefonnummer zu überprüfen const checkPhone = (rule, value, callback) => {
      wenn (!Wert) {
        return callback(new Error('Telefonnummer darf nicht leer sein'));
      } anders {
        //Den regulären Ausdruck der Telefonnummer in der Tool-Klasse abrufen const reg = common.phoneReg
        // konsole.log(reg.test(Wert));
        wenn (reg.test(Wert)) {
          Rückruf();
        } anders {
          //Wenn die Validierungseingabe falsch ist, löschen Sie this.ruleForm.phone = ''
          return callback(new Error('Bitte geben Sie eine gültige Telefonnummer ein'));
        }
      }
    };

    zurückkehren {
      RegelForm: {
        Telefon: '',
        Code: '',
      },

      codeBtnWord: 'Bestätigungscode abrufen', //Text der Schaltfläche „Bestätigungscode abrufen“// waitTime: 61, //Ablaufzeit der Schaltfläche „Bestätigungscode abrufen“ waitTime: 2, //Ablaufzeit der Schaltfläche „Bestätigungscode abrufen“// Überprüfungsregeln: {
        Telefon:
          {Validator: checkPhone, Auslöser: "Unschärfe"}
        ],
        Code: [
          {erforderlich: true, Nachricht: ‚Bitte geben Sie das Bestätigungskennwort ein‘, Auslöser: ‚unscharf‘}
        ]
      }
    };
  },
  //Berechnete Eigenschaften berechnet
  berechnet: {
    // Steuern, ob die Schaltfläche „Bestätigungscode abrufen“ anklickbar ist getCodeBtnDisable: {
      //Taste setzen 61s
      // erhalten() {
      // wenn (this.waitTime === 61) {
      // wenn (diese.regelForm.telefon) {
      // gibt false zurück
      // }
      // gibt true zurück
      // }
      // gibt true zurück
      // }
      erhalten() {
        wenn (diese.waitTime === 2) {
          wenn (diese.regelForm.telefon) {
            return false
          }
          returniere wahr
        }
        returniere wahr
      },
      // Hinweis: Da die berechnete Eigenschaft selbst keine festgelegte Methode hat, unterstützt sie keine Änderungen in der Methode. Ich werde dies weiter unten tun, also muss ich set() manuell hinzufügen {
      }
    },

  }, Methoden: {

    getCode() {
      const _this = dies
      Parameter = {}
      params.phone = diese.regelForm.phone
      // Rufen Sie den SMS-Bestätigungscode auf interface_this.$axios.post('/sendMessage', params).then(res => {
        console.log("--------Überprüfen Sie den Wert der Hintergrundantwort-----", res)
        //Alle Daten speichern const mydata = res.data.data
        console.log("Ich bin in der SMS-Schnittstelle -->", mydata)

        //Bestätigungscode speichern params.yz = mydata.vCode

        console.log("Ich überprüfe den Bestätigungscode-------" + mydata.vCode)
        console.log("Ich überprüfe die Anzahl der Anrufe-------" + mydata.count)

        wenn (res.data.code === 200) {
          diese.$nachricht({
            Nachricht: „Der Bestätigungscode wurde gesendet, bitte warten …“,
            Typ: "Erfolg",
            Mitte: wahr
          })
        }
        wenn (res.data.data.count >= 5) {
          //Rufen Sie die Slider-Verifizierungskomponente event.$emit("VERIFY") auf.
        }

      })

      // Da unten der Timer verwendet wird, müssen Sie diesen Zeiger speichern let that = this
      diese.Wartezeit--
      that.getCodeBtnDisable = true
      this.codeBtnWord = `Erneut abrufen nach ${this.waitTime}s`
      let timer = setzeIntervall(Funktion () {
        wenn (das.Wartezeit > 1) {
          dass.Wartezeit--
          that.codeBtnWord = `Abrufen nach ${that.waitTime}s`
        } anders {
          Intervall löschen(Timer)
          that.codeBtnWord = 'Bestätigungscode abrufen'
          that.getCodeBtnDisable = falsch
          // das.Wartezeit = 61
          das.Wartezeit = 2
        }
      }, 1000)
    },
    Formular absenden(Formularname) {
      const _this = dies
      //Beurteilen Sie, ob der eingegebene Bestätigungscode leer ist, if (this.ruleForm.code != null) {
        dies.$refs[formName].validate((gültig) => {
          if (gültig) {

            _this.$axios.post("/iosLogin", {
              "Telefon": this.ruleForm.phone,
              "Verifizierung": this.ruleForm.code
            }).dann(res => {

              konsole.log(res.daten)
            })


            // console.log("Ich sende:", par)
            //
            // const jwt = par.headers['Autorisierung']
            // console.log("Ich bin Token->", jwt)
            // const userInfo = par.data.data
            // console.log("Benutzerinformationen anzeigen=", userInfo)
            //
            // // Daten teilen // _this.$store.commit("SET_TOKEN", jwt)
            // _this.$store.commit("SET_USERINFO", Benutzerinfo)
            //
            // // Holen // console.log("Ich habe _this.$store.getters.getUser")
            // konsole.log(_this.$store.getters.getUser)

            // _this.$router.push("/blogs")

          } anders {
            console.log('Fehler beim Senden!!');
            gibt false zurück;
          }
        });
      } anders {
        diese.$nachricht({
          showClose: wahr,
          Meldung: „Bitte geben Sie einen Fehler ein“,
          Typ: "Fehler"
        });
      }
    }

  }

}
</Skript>
<Stilbereich>
.el-button.disabled-style {
  Hintergrundfarbe: #EEEEEE;
  Farbe: #CCCCCC;
}

.demo-ruleForm {
  maximale Breite: 500px;
  Rand: 0 automatisch;
}
</Stil>

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Vue-Implementierung eines Beispiels für die Anmeldemethode mit Bestätigungscode
  • Verwenden Sie Vue, um den Effekt der Registrierungsseite zu realisieren. Vue ermöglicht die Anmeldung per SMS-Bestätigungscode.
  • Vue implementiert die Anmeldung mit grafischem Bestätigungscode
  • Vue implementiert die Anmeldung per Mobiltelefonnummer und Bestätigungscode (60-Sekunden-Countdown deaktiviert)
  • Vue implementiert die Anmeldefunktion per SMS-Bestätigungscode (detaillierte Erläuterung des Vorgangs)
  • Vue implementiert Beispielcode zum Senden eines SMS-Bestätigungscode-Logins über eine Mobiltelefonnummer

<<:  Zusammenfassung der Überlegungen zum Schreiben von Web-Frontend-Code

>>:  Der Unterschied zwischen div und span in HTML (Gemeinsamkeiten und Unterschiede)

Artikel empfehlen

Schreiben Sie Ihr HTML so, um Ihren Code kompatibler zu machen

Beispielsweise Benutzer, die eine Bildschirmleseso...

JavaScript implementiert kreisförmigen Fortschrittsbalkeneffekt

In diesem Artikelbeispiel wird der spezifische Ja...

Vue3 + TypeScript-Entwicklungszusammenfassung

Inhaltsverzeichnis Vue3 + TypeScript lernen 1. Um...

Detaillierte Erklärung der drei Möglichkeiten zum Festlegen von Rahmen in HTML

Drei Möglichkeiten zum Festlegen von Rahmen in HT...

Gemeinsame Nutzung verschiedener Methoden zum Deaktivieren des Seitencaches

Heute bin ich beim Entwickeln auf eine Methode ge...

jQuery implementiert Akkordeoneffekte

Dieser Artikel gibt Ihnen den spezifischen Code v...

Detaillierte Erläuterung des Redo-Logs und Undo-Logs in MySQL

Die wichtigsten Protokolle im MySQL-Protokollsyst...

Detaillierte Erklärung zur Installation und Verwendung von Vue-Router

Inhaltsverzeichnis Installieren Grundlegende Konf...