ホームページ  >  記事  >  バックエンド開発  >  BeegoとCaptchaを利用して認証コード機能を実装する

BeegoとCaptchaを利用して認証コード機能を実装する

王林
王林オリジナル
2023-06-22 22:54:091049ブラウズ

インターネットの発展と普及に伴い、ますます多くの Web サイトやアプリケーションが開発されており、その多くはユーザーの正当性とセキュリティを確保するために検証コードを必要としています。この記事では、BeegoフレームワークとCaptchaライブラリを利用して認証コード機能を実装する方法を紹介します。このうち、Beego は Go 言語をベースとした Web アプリケーション フレームワークであり、Captcha は Go 言語のオープンソース検証コード ライブラリです。

  1. Beego フレームワークの準備作業

検証コードを実装する前に、Beego フレームワークをインストールし、新しい Go アプリケーションを作成する必要があります。 Beego フレームワークは、次のコマンドを使用してインストールできます:

go get github.com/astaxie/beego

次に、新しいアプリケーションを作成してサービスを開始します:

beego new myapp
cd myapp
bee run

すべてがうまくいけば、アプリケーションはブラウザでアクセスできるはずです。 「Beego へようこそ!」と出力します。

  1. Captcha ライブラリのインストールと使用

次に、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 番目のパラメーターはユーザーが入力した検証コードを渡します。

  1. Beego への認証コード機能の実装

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。