Avec le développement et la popularité d'Internet, de plus en plus de sites Web et d'applications ont été développés, dont beaucoup nécessitent des codes de vérification pour garantir la validité et la sécurité de l'utilisateur. Cet article expliquera comment utiliser le framework Beego et la bibliothèque Captcha pour implémenter la fonction de code de vérification. Parmi eux, Beego est un framework d'application Web basé sur le langage Go, et Captcha est une bibliothèque de codes de vérification open source en langage Go.
Avant d'implémenter le code de vérification, vous devez installer le framework Beego et créer une nouvelle application Go. Le framework Beego peut être installé à l'aide de la commande suivante :
go get github.com/astaxie/beego
Ensuite, créez une nouvelle application et démarrez le service :
beego new myapp cd myapp bee run
Si tout se passe bien, l'application devrait être accessible dans le navigateur, affichant "Bienvenue chez Beego !".
Ensuite, vous devez installer la bibliothèque Captcha. Vous pouvez utiliser la commande suivante pour installer :
go get github.com/mojocn/base64Captcha
Une fois l'installation terminée, vous pouvez importer la bibliothèque Captcha dans l'application Go et utiliser le code suivant pour générer et vérifier le code de vérification :
// 生成验证码 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)
Dans le code ci-dessus, un Le fichier de configuration config est d'abord défini. Le fichier de configuration spécifie diverses propriétés du code de vérification, telles que la largeur, la hauteur, le jeu de caractères, le temps de survie, etc. Ensuite, le code de vérification est généré en appelant la méthode GenerateCaptcha, et l'image du code de vérification générée et l'ID du code de vérification sont renvoyés à l'utilisateur pour affichage et stockage. Enfin, la méthode VerifyCaptcha est appelée pour vérifier si le code de vérification saisi par l'utilisateur est cohérent avec l'ID du code de vérification généré précédemment.
Notez que lors de l'appel de GenerateCaptcha, le premier paramètre est une chaîne vide, ce qui signifie que le code de vérification généré cette fois n'a pas besoin d'être associé à des données. Si vous devez l'associer à d'autres données, vous pouvez transmettre les données dans le premier paramètre, comme un numéro de téléphone portable ou un nom d'utilisateur, etc. Lors de l'appel de VerifyCaptcha, le premier paramètre transmet l'ID du code de vérification généré précédemment et le deuxième paramètre transmet le code de vérification saisi par l'utilisateur.
Avec la préparation de Beego et Captcha, vous pouvez implémenter la fonction de code de vérification dans l'application Beego. Tout d'abord, générez le code de vérification et affichez l'image du code de vérification dans le contrôleur de Beego. Le code est le suivant :
// 生成验证码 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: 验证通过,执行其他操作 }
Dans le code ci-dessus, générez d'abord le code de vérification dans la méthode GenerateCaptcha et stockez le code de vérification et son identifiant dans la session. . Ensuite, renvoyez l’image du code de vérification générée au client. Dans la méthode CheckCaptcha, obtenez l'ID du code de vérification de la session et utilisez la méthode VerifyCaptcha pour vérifier si le code de vérification saisi par l'utilisateur est correct. Si la vérification réussit, l'ID du code de vérification sera supprimé et d'autres actions seront effectuées.
Enfin, ajoutez les règles de routage suivantes au routage de Beego :
beego.Router("/captcha/generate", &controllers.MainController{}, "get:GenerateCaptcha") beego.Router("/captcha/check", &controllers.MainController{}, "post:CheckCaptcha")
De cette façon, la mise en œuvre de la fonction de code de vérification est terminée. Lors de l'accès à /captcha/generate, un nouveau code de vérification sera généré, son identifiant sera stocké dans la session et l'image du code de vérification sera renvoyée au client. Lors de l'accès à /captcha/check, le code de vérification saisi par l'utilisateur sera obtenu à partir de la requête HTTP POST et vérifié s'il est cohérent avec l'ID du code de vérification généré précédemment. S'ils correspondent, l'ID du code de vérification sera supprimé et d'autres opérations seront effectuées.
Résumé
Cet article explique comment utiliser Beego et Captcha pour implémenter la fonction de code de vérification. Le framework Beego fournit une bonne prise en charge du développement Web et la bibliothèque Captcha fournit une bonne génération de code de vérification et une bonne prise en charge de la vérification. En combinant les deux, la fonction de code de vérification peut être facilement implémentée pour améliorer la sécurité et la robustesse des applications Web.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!