首頁 後端開發 Golang Gin框架中的驗證碼使用實例

Gin框架中的驗證碼使用實例

Jun 23, 2023 am 08:10 AM
驗證碼 實例 gin框架

隨著網路的普及,驗證碼已經成為了登入、註冊、找回密碼等操作的必要流程。在Gin框架中,實作驗證碼功能也變得異常簡單。

本文將介紹如何在Gin框架中使用第三方函式庫實作驗證碼功能,並提供範例程式碼供讀者參考。

一、安裝依賴函式庫

在使用驗證碼之前,我們需要安裝一個第三方函式庫goCaptcha。

安裝goCaptcha可以使用go get指令:

$ go get -u github.com/mojocn/base64Captcha
登入後複製

二、產生驗證碼

goCaptcha提供了三種驗證碼類型,包括數字驗證碼、字母驗證碼和數字字母混合驗證碼。接下來我們將以數位驗證碼為例,示範如何產生驗證碼。

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)
}
登入後複製

在上述程式碼中,我們使用NewDriverDigit函數建立一個驗證碼產生器。函數的參數依序表示圖片寬度、高度、驗證碼長度、雜訊強度和乾擾線條數。接著我們使用NewCaptcha函數建立驗證碼對象,並呼叫Generate方法產生驗證碼。

三、將驗證碼傳送給客戶端

產生驗證碼後,我們需要將其傳送給客戶端。在Gin框架中,可以使用ResponseWriter.Write函數寫入響應體。

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")
}
登入後複製

在上述程式碼中,我們建立了一個/captcha的路由,透過SetCookie方法傳遞驗證碼ID,將產生的文字驗證碼透過ResponseWriter物件寫入回應體。

四、驗證驗證碼

當使用者在表單中輸入驗證碼並提交後,我們需要透過驗證碼ID來取得驗證碼並驗證其正確性。在Go中,我們可以使用MemStore物件來儲存和取得驗證碼。

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")
}
登入後複製

在上述程式碼中,我們建立了一個/login的路由,其中​​首先透過Cookie取得驗證碼ID,然後透過PostForm取得使用者輸入的驗證碼,最後使用驗證碼物件的Verify方法驗證驗證碼的正確性。

五、總結

本文介紹了在Gin框架中使用goCaptcha實作驗證碼功能的方法。首先透過NewDriverDigit函數產生驗證碼產生器,然後使用NewCaptcha函數建立驗證碼對象,並使用Generate方法產生驗證碼。最後透過ResponseWriter向客戶端發送驗證碼,並透過Cookie傳遞驗證碼ID,使用MemStore物件來儲存驗證碼,並在登入時驗證驗證碼的正確性。

在實際開發中,我們可以根據需求自訂驗證碼的各種參數,並將其與其他功能結合起來,為使用者提供更豐富的功能體驗。

以上是Gin框架中的驗證碼使用實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Google瀏覽器不顯示驗證碼圖片怎麼辦?chrome瀏覽器不顯示驗證碼? Google瀏覽器不顯示驗證碼圖片怎麼辦?chrome瀏覽器不顯示驗證碼? Mar 13, 2024 pm 08:55 PM

谷歌瀏覽器不顯示驗證碼圖片怎麼辦?在使用Google瀏覽器登入網頁有時候需要驗證碼驗證。部分使用者在使用圖片驗證碼的時候發現Google瀏覽器無法正常顯示圖片的內容。這該怎麼辦呢?下面小編帶來Google瀏覽器驗證碼不顯示處理方法介紹,希望對大家有幫助!  方法介紹  1、進入軟體,點選右上角的「更多」按鈕,選擇下方選項清單中的「設定」進入。  2、進入新介面後,點選左側的「隱私設定與安全性」選項。  3、接著點擊右側中的「網站設定&rdquo

使用Gin框架實現API文件自動產生和文件中心功能 使用Gin框架實現API文件自動產生和文件中心功能 Jun 23, 2023 am 11:40 AM

隨著網路應用的不斷發展,API介面的使用越來越普及。在開發過程中,為了方便介面的使用和管理,API文件的編寫和維護也變得越來越重要。傳統的文檔編寫方式需要人工維護,效率低且容易出錯。為了解決這些問題,許多團隊開始使用自動產生API文件的方式來提高開發效率和程式碼品質。在這篇文章中,我們將介紹如何使用Gin框架實現API文檔自動生成和文檔中心功能。 Gin是一

手機為什麼收不到驗證碼 手機為什麼收不到驗證碼 Aug 17, 2023 pm 02:49 PM

手機收不到驗證碼是網路問題、手機設定問題、手機電信業者問題和個人設定問題導致的。詳情介紹:1、網路問題,手機所處的網路環境不穩定或訊號弱,就有可能導致驗證碼無法及時送達;2、手機設定問題,不小心將手機的簡訊或語音功能關閉,或將驗證碼的發送號碼加入黑名單中,導致驗證碼無法正常收到;3、手機電信業者問題,手機業者可能會故障或維護,導致驗證碼無法及時送達等等。

虛擬號碼可以接收驗證碼嗎 虛擬號碼可以接收驗證碼嗎 Jan 02, 2024 am 10:22 AM

虛擬號碼可以接收驗證碼,只要註冊時填寫的手機號碼符合規定,並且能夠正常接通手機號,就可以收到簡訊驗證碼。不過,使用虛擬手機號碼要注意,部分網站不支援虛擬手機號碼註冊,因此需要選擇正規的虛擬手機號碼服務商。

Gin框架中的反向代理和請求轉送詳解 Gin框架中的反向代理和請求轉送詳解 Jun 23, 2023 am 11:43 AM

隨著Web應用程式的快速發展,越來越多的企業傾向於使用Golang語言來進行開發。在Golang開發中,使用Gin框架是非常流行的選擇。 Gin框架是一個高效能的Web框架,使用了fasthttp作為HTTP引擎,並擁有輕量級且優雅的API設計。在本文中,我們將深入探討Gin框架中反向代理和請求轉發的應用。反向代理的概念反向代理的概念就是透過代理伺服器使從客戶

使用Gin框架實現國際化和多語言支援功能 使用Gin框架實現國際化和多語言支援功能 Jun 23, 2023 am 11:07 AM

隨著全球化的發展以及互聯網的普及,越來越多的網站和應用程式開始致力於實現國際化和多語言支援功能,以滿足不同人群的需求。為了實現這些功能,開發者需要使用一些先進的技術及框架。在本文中,我們將介紹如何使用Gin框架來實現國際化和多語言支援功能。 Gin框架是一個輕量級的Web框架,由Go語言編寫。它具有高效、易用和靈活等特點,已經成為了許多開發者的首選框架。除此之外,

PHP圖片處理案例:如何實作圖片的驗證碼功能 PHP圖片處理案例:如何實作圖片的驗證碼功能 Aug 17, 2023 pm 12:09 PM

PHP圖片處理案例:如何實現圖片的驗證碼功能隨著互聯網的快速發展,驗證碼成為了保護網站安全的重要手段之一。驗證碼是一種透過影像辨識技術來確定使用者是否為真實使用者的驗證方式。本文將介紹如何使用PHP來實現圖片的驗證碼功能,並附帶程式碼範例。簡介驗證碼是一張包含隨機字元的圖片,使用者需要輸入圖片中的字元才能通過驗證。實現驗證碼的主要過程包括產生隨機字元、繪製字元到圖片

PHP開髮指南:實作驗證碼登入 PHP開髮指南:實作驗證碼登入 Jul 01, 2023 am 09:27 AM

隨著網路的發展和智慧型手機的普及,驗證碼登入功能被越來越多的網站和應用程式採用。驗證碼登入是一種透過輸入正確的驗證碼來驗證使用者身分的登入方式,以提高安全性和防止惡意攻擊。在PHP開發中,實作簡單的驗證碼登入功能並不複雜,可以透過以下步驟來完成。建立資料庫表首先,我們需要在資料庫中建立一個用於儲存驗證碼資訊的表。表格結構可以包含以下欄位:id:自增主鍵phon

See all articles