インターネットの発展と普及に伴い、ますます多くの Web サイトやアプリケーションが開発されており、その多くはユーザーの正当性とセキュリティを確保するために検証コードを必要としています。この記事では、BeegoフレームワークとCaptchaライブラリを利用して認証コード機能を実装する方法を紹介します。このうち、Beego は Go 言語をベースとした Web アプリケーション フレームワークであり、Captcha は Go 言語のオープンソース検証コード ライブラリです。
検証コードを実装する前に、Beego フレームワークをインストールし、新しい Go アプリケーションを作成する必要があります。 Beego フレームワークは、次のコマンドを使用してインストールできます:
go get github.com/astaxie/beego
次に、新しいアプリケーションを作成してサービスを開始します:
beego new myapp cd myapp bee run
すべてがうまくいけば、アプリケーションはブラウザでアクセスできるはずです。 「Beego へようこそ!」と出力します。
次に、Captcha ライブラリをインストールする必要があります。次のコマンドを使用してインストールできます:
go get github.com/mojocn/base64Captcha
インストールが完了したら、Go アプリケーションに Captcha ライブラリをインポートし、次のコードを使用して検証コードを生成して検証できます:
// 生成验证码 config := captcha.ConfigCharacter{ Height: 60, Width: 240, Mode: captcha.CaptchaModeNumber, Complexity: captcha.CaptchaComplexityNormal, CaptchaLen: 4, CaptchaTimeout: 1200, SubPixel: false, ShowLineOptions: captcha.OptionShowHollowLine | captcha.OptionShowSineLine, Source: "1234567890", BgColor: "#eeeeee", } captchaId, captchaImage := captcha.GenerateCaptcha("", config) // 验证验证码 result := captcha.VerifyCaptcha(captchaId, userInputCaptcha)
上記のコードでは、まず構成ファイル config が定義されます。これは、幅、高さ、文字セット、生存時間など、検証コードのさまざまな属性を指定します。次に、GenerateCaptcha メソッドを呼び出すことによって検証コードが生成され、生成された検証コード イメージと検証コード ID が表示および保存のためにユーザーに返されます。最後に、VerifyCaptcha メソッドを呼び出して、ユーザーが入力した検証コードが以前に生成された検証コード ID と一致するかどうかを検証します。
GenerateCaptcha を呼び出す場合、最初のパラメーターは空の文字列であることに注意してください。これは、今回生成される検証コードをデータに関連付ける必要がないことを意味します。他のデータと関連付ける必要がある場合は、携帯電話番号やユーザー名などのデータを最初のパラメータで渡すことができます。 VerifyCaptcha を呼び出すとき、最初のパラメーターは以前に生成された検証コード ID を渡し、2 番目のパラメーターはユーザーが入力した検証コードを渡します。
Beego と Captcha を用意することで、Beego アプリケーションに認証コード機能を実装することができます。まず、検証コードを生成し、Beego のコントローラーに検証コードの画像を表示します。コードは次のとおりです:
// 生成验证码 func (c *MainController) GenerateCaptcha() { config := captcha.ConfigCharacter{ Height: 60, Width: 240, Mode: captcha.CaptchaModeNumber, Complexity: captcha.CaptchaComplexityNormal, CaptchaLen: 4, CaptchaTimeout: 1200, SubPixel: false, Source: "1234567890", BgColor: "#eeeeee", } captchaId, captchaImage := captcha.GenerateCaptcha("", config) // 将验证码及其ID存储到session中,并返回图片 c.SetSession(sessionCaptchaId, captchaId) c.Ctx.ResponseWriter.Header().Set("Cache-Control", "no-store, no-cache") c.Ctx.ResponseWriter.Header().Set("Content-Type", "image/png") captchaImage.WriteTo(c.Ctx.ResponseWriter) } // 验证验证码 func (c *MainController) CheckCaptcha() { publicKey := c.GetString("public_key") inputCaptcha := c.GetString("input_captcha") // 从session中获取验证码ID captchaId := c.GetSession(sessionCaptchaId) if captchaId == nil { c.ResponseError(errNoCaptchaFound) return } // 验证输入的验证码 if !captcha.VerifyCaptcha(captchaId.(string), inputCaptcha) { c.ResponseError(errCaptchaNotMatch) return } // 验证码匹配成功,移除验证码ID c.DelSession(sessionCaptchaId) // TODO: 验证通过,执行其他操作 }
上記コードでは、まず GenerateCaptcha メソッドで検証コードを生成し、検証コードとそのコードを保存しますセッション内のID。そして、生成した検証コード画像をクライアントに返却します。 CheckCaptcha メソッドでは、セッションから検証コード ID を取得し、VerifyCaptcha メソッドを使用して、ユーザーが入力した検証コードが正しいかどうかを検証します。検証が成功すると、検証コード ID が削除され、他のアクションが実行されます。
最後に、Beegoのルーティングに以下のルーティングルールを追加します。
beego.Router("/captcha/generate", &controllers.MainController{}, "get:GenerateCaptcha") beego.Router("/captcha/check", &controllers.MainController{}, "post:CheckCaptcha")
これで検証コード機能の実装は完了です。 /captcha/generate にアクセスすると、新しい検証コードが生成され、その ID がセッションに保存され、検証コードのイメージがクライアントに返されます。 /captcha/check にアクセスすると、ユーザーが入力した検証コードが HTTP POST リクエストから取得され、以前に生成された検証コード ID と一致するかどうかが検証されます。一致する場合、認証コード ID が削除され、他の操作が実行されます。
概要
この記事では、BeegoとCaptchaを使って認証コード機能を実装する方法を紹介します。 Beego フレームワークは優れた Web 開発サポートを提供し、Captcha ライブラリは優れた検証コード生成と検証サポートを提供します。両者を組み合わせることで、Webアプリケーションのセキュリティと堅牢性を向上させる検証コード機能を簡単に実装できます。
以上がBeegoとCaptchaを利用して認証コード機能を実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。