ホームページ > バックエンド開発 > Golang > Gin フレームワークでの検証コードの使用例

Gin フレームワークでの検証コードの使用例

PHPz
リリース: 2023-06-23 08:10:45
オリジナル
1869 人が閲覧しました

インターネットの普及に伴い、ログイン、登録、パスワード検索などの操作に認証コードが必要なプロセスになりました。 Ginフレームワークでは、認証コード機能の実装が非常に簡単になりました。

この記事では、サードパーティのライブラリを使用して、Gin フレームワークに検証コード機能を実装する方法を紹介し、読者の参考となるサンプル コードを提供します。

1. 依存ライブラリのインストール

検証コードを使用する前に、サードパーティ ライブラリ goCaptcha をインストールする必要があります。

goCaptcha をインストールするには、go get コマンドを使用できます:

$ go get -u github.com/mojocn/base64Captcha
ログイン後にコピー

2. 検証コードの生成

goCaptcha は、数値検証コード、文字検証を含む 3 つの検証コード タイプを提供します。コードと英数字の確認コード。次に、デジタル検証コードを例として、検証コードを生成する方法を説明します。

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 メソッドを呼び出して検証コードを生成します。

3. 確認コードをクライアントに送信する

確認コードを生成した後、それをクライアントに送信する必要があります。 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 オブジェクトを通じて応答本文に書き込みました。

4. 検証コードの検証

ユーザーがフォームに検証コードを入力して送信すると、検証コード 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 メソッドを使用します。コードの正確性を検証するためのコード オブジェクト。

5. まとめ

この記事では、goCaptcha を使用して、Gin フレームワークに検証コード機能を実装する方法を紹介します。まず NewDriverDigit 関数を使用して検証コード ジェネレーターを生成し、次に NewCaptcha 関数を使用して検証コード オブジェクトを作成し、Generate メソッドを使用して検証コードを生成します。最後に、ResponseWriter を通じて検証コードがクライアントに送信され、Cookie を通じて検証コード ID が渡され、MemStore オブジェクトを使用して検証コードが格納され、ログイン時に検証コードの正当性が検証されます。

実際の開発では、必要に応じて検証コードのさまざまなパラメータをカスタマイズし、他の機能と組み合わせて、より豊かな機能エクスペリエンスをユーザーに提供できます。

以上がGin フレームワークでの検証コードの使用例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート