インターネットの普及に伴い、ログイン、登録、パスワード検索などの操作に認証コードが必要なプロセスになりました。 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 サイトの他の関連記事を参照してください。