验证码服务

中间件 captcha 用于为 Macaron 实例 提供验证码服务。

下载安装

  1. go get github.com/go-macaron/captcha

使用示例

想要使用该中间件,您必须同时使用 cache 中间件。

  1. // main.go
  2. import (
  3. "github.com/go-macaron/cache"
  4. "github.com/go-macaron/captcha"
  5. "gopkg.in/macaron.v1"
  6. )
  7. func main() {
  8. m := macaron.Classic()
  9. m.Use(cache.Cacher())
  10. m.Use(captcha.Captchaer())
  11. m.Get("/", func(ctx *macaron.Context, cpt *captcha.Captcha) string {
  12. if cpt.VerifyReq(ctx.Req) {
  13. return "valid captcha"
  14. }
  15. return "invalid captcha"
  16. })
  17. m.Run()
  18. }
  1. <!-- templates/hello.tmpl -->
  2. {{.Captcha.CreateHtml}}

自定义选项

该服务允许接受一个参数来进行自定义选项(captcha.Options):

  1. // ...
  2. m.Use(captcha.Captchaer(captcha.Options{
  3. // 获取验证码图片的 URL 前缀,默认为 "/captcha/"
  4. URLPrefix: "/captcha/",
  5. // 表单隐藏元素的 ID 名称,默认为 "captcha_id"
  6. FieldIdName: "captcha_id",
  7. // 用户输入验证码值的元素 ID,默认为 "captcha"
  8. FieldCaptchaName: "captcha",
  9. // 验证字符的个数,默认为 6
  10. ChallengeNums: 6,
  11. // 验证码图片的宽度,默认为 240 像素
  12. Width: 240,
  13. // 验证码图片的高度,默认为 80 像素
  14. Height: 80,
  15. // 验证码过期时间,默认为 600 秒
  16. Expiration: 600,
  17. // 用于存储验证码正确值的 Cache 键名,默认为 "captcha_"
  18. CachePrefix: "captcha_",
  19. }))
  20. // ...