Vue implementiert einen Login-Verifizierungscode

Vue implementiert einen Login-Verifizierungscode

In diesem Artikelbeispiel wird der spezifische Code von Vue zur Implementierung des Anmeldebestätigungscodes zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt

Beginnen wir mit dem Demo-Effektdiagramm

Canvas-Verifizierungscode-Komponente (kann direkt und ohne Änderung kopiert werden)

<Vorlage>
    <div Klasse="s-canvas">
        <canvas id="s-canvas" :width="Inhaltsbreite" :height="Inhaltshöhe"></canvas>
    </div>
</Vorlage>
 
<Skript>
    Standard exportieren {
        Name: "SIdentify",
        Requisiten: {
            Identifizierungscode:
                Typ: Zeichenfolge,
                Standard: „1234“
            },
            SchriftgrößeMin: {
                Typ: Nummer,
                Standard: 25
            },
            SchriftgrößeMax: {
                Typ: Nummer,
                Standard: 30
            },
            HintergrundFarbeMin: {
                Typ: Nummer,
                Standard: 255
            },
            HintergrundFarbeMax: {
                Typ: Nummer,
                Standard: 255
            },
            FarbeMin:
                Typ: Nummer,
                Standard: 0
            },
            FarbeMax: {
                Typ: Nummer,
                Standard: 160
            },
            LinienfarbeMin: {
                Typ: Nummer,
                Standard: 100
            },LinienfarbeMax: {
                Typ: Nummer,
                Standard: 255
            },
            PunktFarbeMin: {
                Typ: Nummer,
                Standard: 0
            },
            PunktFarbeMax: {
                Typ: Nummer,
                Standard: 255
            },
            Inhaltsbreite: {
                Typ: Nummer,
                Standard: 112
            },
            Inhaltshöhe: {
                Typ: Nummer,
                Standard: 31
            }
        },
        Methoden: {
            // Erzeuge eine Zufallszahl randomNum(min, max) {
                gibt Math.floor(Math.random() * (max - min) + min) zurück
            },
            // Erzeuge eine zufällige Farbe randomColor(min, max) {
                sei r = diese.Zufallszahl(min, max)
                sei g = diese.Zufallszahl(min, max)
                sei b = diese.Zufallszahl(min, max)
                gibt 'rgb(' + r + ',' + g + ',' + b + ')' zurück
            },
            zeichneBild() {
                let Leinwand = Dokument.getElementById('s-canvas')
                lass ctx = canvas.getContext('2d')
                ctx.textBaseline = "unten"
                // Zeichne den Hintergrund ctx.fillStyle = this.randomColor(this.backgroundColorMin, this.backgroundColorMax)
                ctx.fillRect(0, 0, diese.Inhaltsbreite, diese.Inhaltshöhe)
                // Text zeichnen für (let i = 0; i < this.identifyCode.length; i++) {
                    dies.drawText(ctx, dies.identifyCode[i], i)
                }
                dies.drawLine(ctx)
                dies.drawDot(ctx)
            },
            zeichneText(ctx, txt, i) {
                ctx.fillStyle = diese.randomColor(diese.colorMin, diese.colorMax)
                ctx.font = diese.randomNum(diese.fontSizeMin, diese.fontSizeMax) + 'px SimHei'
                sei x = (i + 1) * (this.contentWidth / (this.identifyCode.length + 1))
                sei y = this.randomNum(this.fontSizeMax, this.contentHeight - 5)
                var deg = diese.randomNum(-45, 45)
                // Koordinatenursprung und Drehwinkel ändern ctx.translate(x, y)
                ctx.rotate(Grad * Math.PI / 180)
                ctx.fillText(txt, 0, 0)
                // Koordinatenursprung und Drehwinkel wiederherstellen ctx.rotate(-deg * Math.PI / 180)
                ctx.translate(-x, -y)
            },
            zeichneLinie(ctx) {
                // Interferenzlinien zeichnen für (let i = 0; i < 5; i++) {
                    ctx.strokeStyle = diese.randomColor(diese.lineColorMin, diese.lineColorMax)
                    ctx.beginPath()
                    ctx.moveTo(diese.randomNum(0, diese.Inhaltsbreite), diese.randomNum(0, diese.Inhaltshöhe))
                    ctx.lineTo(diese.randomNum(0, diese.Inhaltsbreite), diese.randomNum(0, diese.Inhaltshöhe))
                    ctx.stroke()
                }
            },
            Punkt zeichnen(ctx) {
                // Zeichne Interferenzpunkte für (let i = 0; i < 80; i++) {
                    ctx.fillStyle = diese.randomColor(0, 255)
                    ctx.beginPath()
                    ctx.arc(diese.randomNum(0, diese.Inhaltsbreite), diese.randomNum(0, diese.Inhaltshöhe), 1, 0, 2 * Math.PI)
                    ctx.fill()
                }
            }
        },
        betrachten:
            identifiziereCode() {
                dieses.drawPic()
            }
        },
        montiert() {
            dieses.drawPic()
        }
    }
</Skript>
 
<Stilbereich>
    .s-Leinwand {
        Höhe: 38px;
 
    }
    .s-canvas Leinwand{
        Rand oben: 1px;
        Rand links: 8px;
    }
</Stil>

Der HTML-Teil der Anmeldeseite kann nach Bedarf geändert werden

Einführung der Bestätigungscode-Komponente

Methoden

Vollständiger Code der Anmeldeseite

<style lang="less">
    @import './login.less';
</Stil>
 
<Vorlage>
    <div Klasse="login" @keydown.enter="handleSubmit">
        <div Klasse="login-con">
            <Karte :bordered="false" style="width: 350px;height: 380px">
                <div Klasse="form-con">
                    <Tabs Wert="Name1" :animiert="false">
                        <TabPane label="Anmelden" name="name1">
                            <Formular ref="loginFormular" :model="formular" :rules="regeln" :label-width="90" inline>
                                <FormItem label="Konto" prop="Benutzername">
                                    <Input v-model="form.username" placeholder="Bitte geben Sie Ihre Kontonummer ein" ref="input" clearable style="width: 200px"/>
                                </FormItem>
                                <FormItem label="Passwort" prop="Passwort">
                                    <Input v-model="form.password" placeholder="Bitte geben Sie Ihr Passwort ein" clearable style="width: 200px"/>
                                </FormItem>
                                <FormItem label="VerifizierungsCode" prop="VerifizierungsCode">
                                    <Input v-model="form.verificationCode" placeholder="Bitte geben Sie den Bestätigungscode ein" clearable style="width: 200px"/>
                                    <div @click="refreshCode" style="margin-top: 20px">
                                        <!--Bestätigungscode-Komponente-->
                                        <s-identify :identifyCode="identifyCode"></s-identify>
                                    </div>
                                </FormItem>
                                <div Stil="Textausrichtung: Mitte">
                                    <Button @click="handleSubmit" type="primary" style="margin-right: 20px">Anmelden</Button>
                                </div>
                            </Form>
                        </TabPane>
                        <TabPane label="Registrieren" name="name2">
                            <Formular ref="formValidate" :model="formValidate" :rules="ruleValidate" :label-width="90" inline>
                                <FormItem label="Konto" prop="Benutzername">
                                    <Input v-model="formValidate.username" placeholder="Bitte geben Sie Ihre Kontonummer ein" ref="input" clearable style="width: 200px"/>
                                </FormItem>
                                <FormItem label="Passwort" prop="Passwort">
                                    <Input v-model="formValidate.password" placeholder="Bitte geben Sie Ihr Passwort ein" clearable style="width: 200px"/>
                                </FormItem>
                                <FormItem label="Mobilnummer" prop="mobile">
                                    <Input v-model="formValidate.mobile" placeholder="Bitte geben Sie Ihre Handynummer ein" clearable style="width: 200px" />
                                </FormItem>
                                <FormItem label="SMS-Bestätigungscode" prop="header">
                                    <Input v-model="formValidate.header" placeholder="SMS-Bestätigungscode" style="width: 200px"/>
                                    <Button Typ="primär" Größe="klein" @click="getCode" :disabled="codeDisabled">{{codeMsg}}</Button>
                                </FormItem>
                                <div Stil="Textausrichtung: Mitte">
                                    <Button type="primary" @click="register('formValidate')">Registrieren</Button>
                                </div>
                            </Form>
                        </TabPane>
                    </Tabs>
                </div>
            </Karte>
        </div>
        <!--<vue-partikel
                Farbe: "FF4500"
                :Partikelopacity="0,7"
                :Partikelanzahl="300"
                ShapeType = "Kreis"
                :Partikelgröße="7"
                LinienFarbe="00FF00"
                :Zeilenbreite="2"
                :lineLinked="true"
                :Linienopacity="0,4"
                :LinienAbstand="150"
                :Bewegungsgeschwindigkeit="4"
                :hoverEffect="wahr"
                hoverMode="greifen"
                :KlickEffekt="true"
                Klickmodus="abwehren"
        >
        </vue-partikel>-->
    </div>
</Vorlage>
 
<Skript>
    Cookies von „js-cookie“ importieren;
    importiere {apiRequest, login, getCode} aus '@/service/service';
    importiere SIdentify aus „@/components/SIdentify“;
 
    Standard exportieren {
        Komponenten: { SIdentify },
        Name: 'Anmelden',
        Daten() {
            zurückkehren {
                bilden: {},
                formValidate: {},
                Regeln:
                    Benutzername: [
                        {erforderlich: true, Nachricht: ‚Der Login-Benutzername darf nicht leer sein‘, Auslöser: ‚unscharf‘}
                    ],
                    Passwort: [
                        {erforderlich: true, Nachricht: ‚Das Anmeldekennwort darf nicht leer sein‘, Auslöser: ‚unscharf‘}
                    ],
                    Bestätigungscode:
                        {erforderlich: true, Nachricht: ‚Der Bestätigungscode darf nicht leer sein‘, Auslöser: ‚unscharf‘}
                    ]
                },
                RegelValidate: {
                    Benutzername: [
                        {erforderlich: true, Nachricht: ‚Der Login-Benutzername darf nicht leer sein‘, Auslöser: ‚unscharf‘}
                    ],
                    Passwort: [
                        {erforderlich: true, Nachricht: ‚Das Anmeldekennwort darf nicht leer sein‘, Auslöser: ‚unscharf‘}
                    ],
                    Handy: [
                        {erforderlich: true, Nachricht: ‚Telefonnummer darf nicht leer sein‘, Auslöser: ‚unscharf‘}
                    ],
                    Kopfzeile: [
                        {erforderlich: true, Nachricht: ‚SMS-Bestätigungscode darf nicht leer sein‘, Auslöser: ‚unscharf‘}
                    ]
                },
                img:'../../static/grey_wolf.jpg',
                // Ob die Schaltfläche deaktiviert werden soll codeDisabled: false,
                // Countdown Sekunden Countdown: 60,
                // Der Text auf der Schaltfläche codeMsg: 'Bestätigungscode abrufen',
                //Timer Timer: null,
                Identifizierungscode: '',
                Identifizierungscodes: '1234567890abcdefjhijklinopqrsduvwxyz',
            };
        },
        Methoden: {
            // Bestätigungscode aktualisieren refreshCode () {
                this.identifyCode = ''
                dies.makeCode(diese.identifyCodes,4);
            },
            Code erstellen (o,l) {
                für (sei i = 0; i < l; i++) {
                    dieser.identifyCode += dieser.identifyCodes[diese.randomNum(0, dieser.identifyCodes.length)]
                }
            },
            Zufallszahl (min, max) {
                gibt Math.floor(Math.random() * (max - min) + min) zurück
            },
            // SMS-Bestätigungscode abrufen getCode() {
                // 60-Sekunden-Countdown für den Bestätigungscode if (!this.timer) {
                    dies.getValidStr();
                    this.timer = setInterval(this.getValidStr, 1000);
                }
                apiRequest(diese, getCode(diese.form.mobile), Antwort => {
                });
            },
            getValidStr(){
                wenn (dieser.Countdown > 0 und dieser.Countdown <= 60) {
                    dieser.Countdown--;
                    wenn (dieser.Countdown !== 0) {
                        this.codeMsg = "Erneut senden(" + this.countdown + ")";
                        this.codeDisabled = wahr;
                    } anders {
                        : ClearInterval(dieser.Timer);
                        this.codeMsg = "Bestätigungscode abrufen";
                        dieser.Countdown = 60;
                        dieser.timer = null;
                        this.codeDisabled = falsch;
                    }
                }
            },
            handleSubmit() {
                dies.$refs.loginForm.validate((gültig) => {
                    if (gültig) {
                        // MD5-Verschlüsselung des Anmeldekennworts let password = this.$copyto.md5(this.form.password);
                        //Anforderung der Anmeldeschnittstelle apiRequest(this, login(this.form.username, password), response => {
                            dies.$store.commit('setUserInfo', response.data);
                            Cookies.set('Benutzer', this.form.username);
                            Cookies.set('Benutzer-ID', Antwort.Daten.ID);
                            localStorage.sessionId = response.sessionId
                            dies.$store.commit('setAvator', '');
                            wenn (dieses.Formular.Benutzername === 'admin') {
                                Cookies.set('Zugriff', 0);
                            } anders {
                                Cookies.set('Zugriff', 1);
                            }
                            dies.$router.push({name: 'home_index'});
                        });
                    }
                });
            },
            registrieren() {
            }
        },
        montiert () {
            // Initialisiere den Bestätigungscode this.identifyCode = ''
            dies.makeCode(diese.identifyCodes, 4)
        },
 
    };
</Skript>
 
<Stil>
 
</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+Element implementiert zufälligen Bestätigungscode für die Anmeldung
  • Vue-Implementierung eines Beispiels für die Anmeldemethode mit Bestätigungscode
  • Vue implementiert beim Anmelden einen grafischen Überprüfungscode
  • Vue implementiert die Anmeldung per Mobiltelefon-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 Bildverifizierungscode beim Anmelden
  • Vue implementiert die Anmeldung per Mobiltelefonnummer und Bestätigungscode (60-Sekunden-Countdown deaktiviert)
  • Vue implementiert die Bestätigungscodefunktion der Anmeldeschnittstelle
  • So legen Sie das Eingabefeld für den Bestätigungscode auf der Vue-Anmeldeseite fest

<<:  Analyse der Verwendung von MySQL-Abfragesortierung und Abfrageaggregationsfunktionen

>>:  Implementierung eines Nginx-Load-Balancing-Clusters

Artikel empfehlen

Lösung für „Keine Eingabedatei angegeben“ in nginx+php

Heute ist in meiner lokalen Entwicklungsumgebung ...

Verwendung von Markierungs-Tags im CSS-Listenmodell

In diesem Artikel werden hauptsächlich die Stilat...

JS realisiert die Kartenausgabe-Animation

In diesem Artikelbeispiel wird der spezifische JS...

Vue realisiert die Funktion eines Bucheinkaufswagens

In diesem Artikelbeispiel wird der spezifische Co...

Beispielcode eines CSS-responsiven Layoutsystems

Responsive Layoutsysteme sind in den heute gängig...

So erstellen Sie eine MySQL-Datenbank (de1) mit Befehlen

1. Verbindung zu MySQL herstellen Format: mysql -...

Ausführliches Tutorial zur Installation von Deepin in VMware15 (Bild und Text)

Vorwort Die Benutzeroberfläche von Deepin sieht w...

Die 6 effektivsten Möglichkeiten zum Schreiben von HTML und CSS

In diesem Artikel werden die sechs wirksamsten Me...

Lösung für das Problem, dass der Docker-Container nicht gestoppt werden kann

Die Lösung lautet wie folgt: 1. Container löschen...

Detaillierte Erklärung des TARGET-Attributs des HTML-Hyperlink-Tags A

Das Hyperlink-Tag <a> stellt einen Linkpunkt...

MySQL query_cache_type-Parameter und Verwendungsdetails

Der Zweck der Einrichtung eines MySQL-Abfragecach...

Implementierung eines einfachen Gobang-Spiels mit nativem JavaScript

In diesem Artikel finden Sie den spezifischen Cod...

So installieren Sie Oracle Java 14 auf Ubuntu Linux

Vor Kurzem hat Oracle die öffentliche Verfügbarke...