Heim >Backend-Entwicklung >Golang >Beispiele für die Verwendung von Verifizierungscodes im Gin-Framework

Beispiele für die Verwendung von Verifizierungscodes im Gin-Framework

PHPz
PHPzOriginal
2023-06-23 08:10:451873Durchsuche

Mit der Verbreitung des Internets sind Verifizierungscodes zu einem notwendigen Prozess für die Anmeldung, Registrierung, das Abrufen von Passwörtern und andere Vorgänge geworden. Im Gin-Framework ist die Implementierung der Verifizierungscode-Funktion extrem einfach geworden.

In diesem Artikel wird erläutert, wie eine Bibliothek eines Drittanbieters zum Implementieren der Verifizierungscodefunktion im Gin-Framework verwendet wird, und es wird ein Beispielcode als Referenz für die Leser bereitgestellt.

1. Abhängige Bibliotheken installieren

Bevor wir den Bestätigungscode verwenden, müssen wir eine Drittanbieter-Bibliothek goCaptcha installieren.

Um goCaptcha zu installieren, können Sie den Befehl go get verwenden:

$ go get -u github.com/mojocn/base64Captcha

2. Verifizierungscode generieren

goCaptcha bietet drei Verifizierungscodetypen, darunter numerischen Verifizierungscode, alphabetischen Verifizierungscode und gemischten alphanumerischen Verifizierungscode. Als nächstes nehmen wir den digitalen Bestätigungscode als Beispiel, um zu demonstrieren, wie der Bestätigungscode generiert wird.

package main

import (
    "fmt"
    "github.com/gin-gonic/gin"
    b64 "github.com/mojocn/base64Captcha"
)

func main() {
    // 以下是生成验证码的代码
    driver := b64.NewDriverDigit(80, 240, 6, 0.7, 80)
    captcha := b64.NewCaptcha(driver, b64.DefaultMemStore)
    id, b64s, err := captcha.Generate()
    if err != nil {
        fmt.Println(err.Error())
    }
    fmt.Println(id, b64s)
}

Im obigen Code verwenden wir die NewDriverDigit-Funktion, um einen Bestätigungscode-Generator zu erstellen. Die Parameter der Funktion repräsentieren nacheinander die Bildbreite, -höhe, die Länge des Verifizierungscodes, die Rauschintensität und die Anzahl der Interferenzlinien. Dann verwenden wir die Funktion NewCaptcha, um ein Verifizierungscodeobjekt zu erstellen und rufen die Generate-Methode auf, um den Verifizierungscode zu generieren.

3. Senden Sie den Bestätigungscode an den Kunden.

Nachdem wir den Bestätigungscode generiert haben, müssen wir ihn an den Kunden senden. Im Gin-Framework können Sie die Funktion ResponseWriter.Write verwenden, um den Antworttext zu schreiben.

package main

import (
    "fmt"
    "github.com/gin-gonic/gin"
    b64 "github.com/mojocn/base64Captcha"
)

func main() {
    router := gin.Default()

    // 以下是生成验证码的代码
    driver := b64.NewDriverDigit(80, 240, 6, 0.7, 80)
    captcha := b64.NewCaptcha(driver, b64.DefaultMemStore)
    router.GET("/captcha", func(c *gin.Context) {
        id, b64s, err := captcha.Generate()
        if err != nil {
            fmt.Println(err.Error())
            c.String(500, err.Error())
            return
        }
        c.SetCookie("captcha_id", id, 300, "/", "localhost", false, true)
        c.Data(200, "image/png", []byte(b64s))
    })

    router.Run(":8080")
}

Im obigen Code haben wir eine /captcha-Route erstellt, die Bestätigungscode-ID über die SetCookie-Methode übergeben und den generierten Textbestätigungscode über das ResponseWriter-Objekt in den Antworttext geschrieben.

4. Überprüfen Sie den Bestätigungscode

Wenn der Benutzer den Bestätigungscode in das Formular eingibt und absendet, müssen wir den Bestätigungscode über die Bestätigungscode-ID erhalten und seine Richtigkeit überprüfen. In Go können wir MemStore-Objekte verwenden, um Bestätigungscodes zu speichern und abzurufen.

package main

import (
    "fmt"
    "github.com/gin-gonic/gin"
    b64 "github.com/mojocn/base64Captcha"
)

func main() {
    router := gin.Default()

    // 以下是生成验证码的代码
    driver := b64.NewDriverDigit(80, 240, 6, 0.7, 80)
    captcha := b64.NewCaptcha(driver, b64.DefaultMemStore)
    router.GET("/captcha", func(c *gin.Context) {
        id, b64s, err := captcha.Generate()
        if err != nil {
            fmt.Println(err.Error())
            c.String(500, err.Error())
            return
        }
        c.SetCookie("captcha_id", id, 300, "/", "localhost", false, true)
        c.Data(200, "image/png", []byte(b64s))
    })

    // 以下是验证验证码的代码
    router.POST("/login", func(c *gin.Context) {
        captchaId, err := c.Cookie("captcha_id")
        if err != nil {
            fmt.Println(err.Error())
            c.String(400, "未生成验证码")
            return
        }
        captchaVal := c.PostForm("captcha_val")
        if captchaVal == "" {
            c.String(400, "请输入验证码")
            return
        }
        if !captcha.Verify(captchaId, captchaVal) {
            c.String(400, "验证码错误")
            return
        }
        c.String(200, "登录成功")
    })

    router.Run(":8080")
}

Im obigen Code haben wir eine /login-Route erstellt, die zuerst die Bestätigungscode-ID über Cookie erhält, dann den vom Benutzer eingegebenen Bestätigungscode über PostForm erhält und schließlich die Verify-Methode des Bestätigungscodeobjekts zur Überprüfung verwendet die Richtigkeit des Verifizierungscodes.

5. Zusammenfassung

In diesem Artikel wird erläutert, wie Sie mit goCaptcha die Verifizierungscodefunktion im Gin-Framework implementieren. Generieren Sie zunächst den Bestätigungscode-Generator über die Funktion NewDriverDigit, verwenden Sie dann die Funktion NewCaptcha, um das Bestätigungscode-Objekt zu erstellen, und verwenden Sie die Generate-Methode, um den Bestätigungscode zu generieren. Schließlich wird der Bestätigungscode über ResponseWriter an den Client gesendet, die Bestätigungscode-ID wird über Cookie weitergeleitet, das MemStore-Objekt wird zum Speichern des Bestätigungscodes verwendet und die Richtigkeit des Bestätigungscodes wird beim Anmelden überprüft.

In der tatsächlichen Entwicklung können wir verschiedene Parameter des Bestätigungscodes je nach Bedarf anpassen und mit anderen Funktionen kombinieren, um Benutzern ein umfassenderes Funktionserlebnis zu bieten.

Das obige ist der detaillierte Inhalt vonBeispiele für die Verwendung von Verifizierungscodes im Gin-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn