Verwenden Sie das Gin-Framework, um die Generierung von Verifizierungscodes und Verifizierungsfunktionen zu implementieren

PHPz
Freigeben: 2023-06-22 12:01:37
Original
1455 Leute haben es durchsucht

Mit der Entwicklung des Internets sind Verifizierungscodes zunehmend zu einer gängigen Sicherheitsüberprüfungsmaßnahme für Websites und Anwendungen geworden. Verifizierungscode ist eine Mensch-Computer-Interaktionstechnologie, die auf Bildern, Tönen, Text usw. basiert und dazu dient, böswillige Angriffe und Missbrauch durch Roboter zu verhindern.

In diesem Artikel stellen wir vor, wie Sie das Gin-Framework der Go-Sprache verwenden, um die Generierung von Verifizierungscodes und Verifizierungsfunktionen zu implementieren. Gin ist ein leichtes Web-Framework, mit dem schnell RESTful-API- und WEB-Anwendungen erstellt werden können.

  1. Installieren Sie das Gin-Framework

Bevor wir beginnen, müssen wir zuerst das Gin-Framework installieren. Sie können das Go-Befehlszeilentool verwenden, um Folgendes zu installieren:

go get -u github.com/gin-gonic/gin
Nach dem Login kopieren
  1. Implementieren Sie die Funktion zur Generierung des Bestätigungscodes

Um das Bestätigungscode-Bild zu generieren, müssen wir die Drittanbieterbibliothek github.com/mojocn/base64Captcha verwenden. Die Bibliothek bietet mehrere Verifizierungscodetypen und unterstützt benutzerdefinierte Parameter. Das Folgende ist ein Beispielcode zum Generieren eines Bildverifizierungscodes:

package main

import (
    "fmt"
    "time"

    "github.com/gin-gonic/gin"
    "github.com/mojocn/base64Captcha"
)

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

    // 生成验证码图片
    r.GET("/captcha", func(c *gin.Context) {
        // 配置
        driver := base64Captcha.NewDriverDigit(80, 240, 4, 0.5, 80)
        store := base64Captcha.DefaultMemStore
        captcha := base64Captcha.NewCaptcha(driver, store)

        // 生成验证码
        id, b64s, err := captcha.Generate()
        if err != nil {
            c.JSON(500, gin.H{"error": err.Error()})
            return
        }

        // 返回验证码图片
        c.JSON(200, gin.H{
            "id":      id,
            "image":   b64s,
            "expires": time.Now().Add(time.Minute * 5).Unix(),
        })
    })

    r.Run(":8080")
}
Nach dem Login kopieren

In diesem Beispiel verwenden wir den standardmäßigen Memeory-Speicher zum Speichern der Verifizierungscodeinformationen (andere Speicher wie Redis können ebenfalls verwendet werden). Der zahlenbasierte CAPTCHA-Treiber erstellt CAPTCHAs mit einer Breite von 80 Pixeln, einer Höhe von 240 Pixeln, einer Länge von vier Zeichen und einer Rauschintensität von 0,5. Die Generate-Methode gibt die generierte Bestätigungscode-ID, das Bestätigungscodebild und Fehlerinformationen zurück. Hier geben wir das Verifizierungscodebild in base64-codierter Form an den Client zurück und geben in der Antwort die Ablaufzeit an.

  1. Implementieren Sie die Verifizierungsfunktion für den Verifizierungscode.

Wenn der Kunde den Verifizierungscode übermittelt, muss überprüft werden, ob die Benutzereingabe mit dem generierten Verifizierungscode übereinstimmt. Verwenden Sie weiterhin die Verify-Funktion der Bibliothek github.com/mojocn/base64Captcha, um den Bestätigungscode zu überprüfen. Hier ist ein Beispielcode zum Überprüfen eines Bild-Captchas:

package main

import (
    "fmt"

    "github.com/gin-gonic/gin"
    "github.com/mojocn/base64Captcha"
)

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

    // 验证验证码
    r.POST("/verify", func(c *gin.Context) {
        var form struct {
            ID   string `form:"id" binding:"required"`
            Code string `form:"code" binding:"required"`
        }
        if err := c.ShouldBind(&form); err != nil {
            c.JSON(400, gin.H{"error": err.Error()})
            return
        }

        // 验证验证码
        if base64Captcha.VerifyCaptcha(form.ID, form.Code) {
            c.JSON(200, gin.H{"success": true})
        } else {
            c.JSON(401, gin.H{"error": "验证码错误"})
        }
    })

    r.Run(":8080")
}
Nach dem Login kopieren

In diesem Beispiel definieren wir eine Struktur zum Speichern der vom Client übermittelten Captcha-ID und des Captcha-Werts. Verwenden Sie die Funktion ShouldBind, um den Anforderungstext an die Struktur zu binden. Wenn die Bindung fehlschlägt, wird ein 400-Fehler zurückgegeben. Bei der Überprüfung des Bestätigungscodes können Sie mit der Funktion „VerifyCaptcha“ überprüfen, ob der vom Client übermittelte Wert des Bestätigungscodes korrekt ist. Wenn die Verifizierung erfolgreich ist, wird eine 200-Antwort zurückgegeben; andernfalls wird ein 401-Fehler zurückgegeben und der Grund für den Verifizierungscode-Fehler wird abgefragt.

  1. Vollständiger Code

Durch die Kombination des obigen Beispielcodes zum Generieren des Verifizierungscodes und des Verifizierungscodes können wir einen vollständigen Code wie folgt erhalten:

package main

import (
    "fmt"
    "time"

    "github.com/gin-gonic/gin"
    "github.com/mojocn/base64Captcha"
)

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

    // 生成验证码图片
    r.GET("/captcha", func(c *gin.Context) {
        // 配置
        driver := base64Captcha.NewDriverDigit(80, 240, 4, 0.5, 80)
        store := base64Captcha.DefaultMemStore
        captcha := base64Captcha.NewCaptcha(driver, store)

        // 生成验证码
        id, b64s, err := captcha.Generate()
        if err != nil {
            c.JSON(500, gin.H{"error": err.Error()})
            return
        }

        // 返回验证码图片
        c.JSON(200, gin.H{
            "id":      id,
            "image":   b64s,
            "expires": time.Now().Add(time.Minute * 5).Unix(),
        })
    })

    // 验证验证码
    r.POST("/verify", func(c *gin.Context) {
        var form struct {
            ID   string `form:"id" binding:"required"`
            Code string `form:"code" binding:"required"`
        }
        if err := c.ShouldBind(&form); err != nil {
            c.JSON(400, gin.H{"error": err.Error()})
            return
        }

        // 验证验证码
        if base64Captcha.VerifyCaptcha(form.ID, form.Code) {
            c.JSON(200, gin.H{"success": true})
        } else {
            c.JSON(401, gin.H{"error": "验证码错误"})
        }
    })

    r.Run(":8080")
}
Nach dem Login kopieren
  1. Zusammenfassung

In diesem Artikel wird die Verwendung des Gin-Frameworks und von Github vorgestellt Die .com/mojocn/base64Captcha-Bibliothek implementiert Verifizierungscode-Generierung und Verifizierungsfunktionen. Die Verifizierungscode-Technologie ist eine weit verbreitete Sicherheitsüberprüfungsmethode, mit der Roboterangriffe und böswilliger Missbrauch wirksam verhindert werden können. In der Praxis können je nach tatsächlichem Bedarf andere Verifizierungscodetypen und Speichermethoden ausgewählt und mit anderen Sicherheitsmaßnahmen kombiniert werden, um die Sicherheit und Zuverlässigkeit der Anwendung zu erhöhen.

Das obige ist der detaillierte Inhalt vonVerwenden Sie das Gin-Framework, um die Generierung von Verifizierungscodes und Verifizierungsfunktionen zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!