Package captcha is a middleware that provides captcha service for Flamego.
The minimum requirement of Go is 1.18.
go get github.com/flamego/captcha
<!-- templates/home.tmpl -->
<form method="POST">
{{.CaptchaHTML}} <br>
<input name="captcha">
<button>Submit</button>
</form>
package main
import (
"net/http"
"github.com/flamego/captcha"
"github.com/flamego/flamego"
"github.com/flamego/session"
"github.com/flamego/template"
)
func main() {
f := flamego.Classic()
f.Use(session.Sessioner())
f.Use(captcha.Captchaer())
f.Use(template.Templater())
f.Get("/", func(t template.Template, data template.Data, captcha captcha.Captcha) {
data["CaptchaHTML"] = captcha.HTML()
t.HTML(http.StatusOK, "home")
})
f.Post("/", func(c flamego.Context, captcha captcha.Captcha) {
if !captcha.ValidText(c.Request().FormValue("captcha")) {
c.ResponseWriter().WriteHeader(http.StatusBadRequest)
_, _ = c.ResponseWriter().Write([]byte(http.StatusText(http.StatusBadRequest)))
} else {
c.ResponseWriter().WriteHeader(http.StatusOK)
_, _ = c.ResponseWriter().Write([]byte(http.StatusText(http.StatusOK)))
}
})
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.