Files
daohangye/service/api/api_v1/system/captcha.go
T
2023-11-08 21:53:07 +08:00

64 lines
1.9 KiB
Go

package system
import (
"encoding/base64"
"strconv"
"sun-panel/lib/captcha"
"sun-panel/lib/cmn"
"github.com/gin-gonic/gin"
)
type CaptchaApi struct {
ErrMsg string // 错误信息
}
// 获取图像
func (c *CaptchaApi) GetImage(ctx *gin.Context) {
key := cmn.BuildRandCode(16, cmn.RAND_CODE_MODE2)
width, _ := strconv.Atoi(ctx.Param("width"))
height, _ := strconv.Atoi(ctx.Param("height"))
if width == 0 || width > 500 {
width = 120
}
if height == 0 || height > 500 {
height = 44
}
// 设置网页验证码的cookie
ctx.SetCookie("CaptchaId", key, 3600, "/", "", false, false)
base64Str := captcha.GenerateCaptchaHandler(key, width, height)
_ = base64Str
// base64 字符串一般会包含头部 data:image/xxx;base64, 需要去除
baseImg, _ := base64.StdEncoding.DecodeString(base64Str[22:])
_, _ = ctx.Writer.WriteString(string(baseImg))
}
// 获取图像根据验证器id,id从地址栏获取
func (c *CaptchaApi) GetImageByCaptchaId(ctx *gin.Context) {
// key := cmn.BuildRandCode(16, cmn.RAND_CODE_MODE2)
width, _ := strconv.Atoi(ctx.Param("width"))
height, _ := strconv.Atoi(ctx.Param("height"))
captchaId := ctx.Param("captchaId")
if width == 0 || width > 500 {
width = 120
}
if height == 0 || height > 500 {
height = 44
}
// 设置网页验证码的cookie
base64Str := captcha.GenerateCaptchaHandler(captchaId, width, height)
_ = base64Str
// base64 字符串一般会包含头部 data:image/xxx;base64, 需要去除
baseImg, _ := base64.StdEncoding.DecodeString(base64Str[22:])
_, _ = ctx.Writer.WriteString(string(baseImg))
}
func (c *CaptchaApi) CheckVCode(id, vcode string) {
// Captcha.Store = base64Captcha.DefaultMemStore
// if store.Verify(id, vcode, true) {
// body = map[string]interface{}{"code": 1001, "msg": "ok"}
// }
// w.Header().Set("Content-Type", "application/json; charset=utf-8")
// json.NewEncoder(w).Encode(body)
}