Package recaptcha is a middleware that provides reCAPTCHA integration for Flamego.
go get github.com/flamego/recaptcha
<!-- templates/home.tmpl --> <html> <head> <script src="https://www.google.com/recaptcha/api.js"></script> </head> <body> <script> function onSubmit(token) { document.getElementById("demo-form").submit(); } </script> <form id="demo-form" method="POST"> <button class="g-recaptcha" data-sitekey="{{.SiteKey}}" data-callback='onSubmit' data-action='submit'>Submit</button> </form> </body> </html>
package main import ( "fmt" "net/http" "github.com/flamego/flamego" "github.com/flamego/recaptcha" "github.com/flamego/template" ) func main() { f := flamego.Classic() f.Use(template.Templater()) f.Use(recaptcha.V3( recaptcha.Options{ Secret: "<SECRET>", VerifyURL: recaptcha.VerifyURLGoogle, }, )) f.Get("/", func(t template.Template, data template.Data) { data["SiteKey"] = "<SITE KEY>" t.HTML(http.StatusOK, "home") }) f.Post("/", func(w http.ResponseWriter, r *http.Request, re recaptcha.RecaptchaV3) { token := r.PostFormValue("g-recaptcha-response") resp, err := re.Verify(token) if err != nil { w.WriteHeader(http.StatusBadRequest) _, _ = w.Write([]byte(err.Error())) return } else if !resp.Success { w.WriteHeader(http.StatusBadRequest) _, _ = w.Write([]byte(fmt.Sprintf("Verification failed, error codes %v", resp.ErrorCodes))) return } w.WriteHeader(http.StatusOK) _, _ = w.Write([]byte("Verified!")) }) f.Run() }
- Read documentation and examples.
- Please file an issue or start a discussion on the flamego/flamego repository.
This project is under the MIT License. See the LICENSE file for the full license text.