v1.0.0
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
package captcha
|
||||
|
||||
import (
|
||||
"sun-panel/global"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/mojocn/base64Captcha"
|
||||
)
|
||||
|
||||
var Store = base64Captcha.DefaultMemStore
|
||||
|
||||
func NewDriver(width, height int) *base64Captcha.DriverString {
|
||||
driver := new(base64Captcha.DriverString)
|
||||
driver.Height = height
|
||||
driver.Width = width
|
||||
driver.NoiseCount = 0
|
||||
driver.ShowLineOptions = base64Captcha.OptionShowSlimeLine | base64Captcha.OptionShowHollowLine
|
||||
driver.Length = 4
|
||||
driver.Source = "1234567890qwertyuipkjhgfdsazxcvbnm"
|
||||
driver.Fonts = []string{"wqy-microhei.ttc"}
|
||||
return driver
|
||||
}
|
||||
|
||||
// 生成图形验证码
|
||||
func GenerateCaptchaHandler(id string, width, height int) string {
|
||||
var driver = NewDriver(width, height).ConvertFonts()
|
||||
c := base64Captcha.NewCaptcha(driver, Store)
|
||||
_, content, answer := c.Driver.GenerateIdQuestionAnswer()
|
||||
|
||||
item, _ := c.Driver.DrawCaptcha(content)
|
||||
c.Store.Set(id, answer)
|
||||
return item.EncodeB64string()
|
||||
}
|
||||
|
||||
// 验证
|
||||
func CaptchaVerifyHandle(id, vcode string) bool {
|
||||
return Store.Verify(id, vcode, true)
|
||||
}
|
||||
|
||||
// 根据key获取验证码ID
|
||||
func CaptchaGetIdByCookieHeader(c *gin.Context, key string) (captchaId string, err error) {
|
||||
|
||||
captchaId, err = c.Cookie("CaptchaId")
|
||||
if err != nil {
|
||||
global.Logger.Errorf("failed to get captchaId from cookie, err:%+v\n", err)
|
||||
return captchaId, err
|
||||
}
|
||||
if captchaId == "" {
|
||||
captchaId = c.GetHeader(key)
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user