sys_captcha.go 1.5 KB
Newer Older
1
package system
2 3

import (
4 5 6
	"github.com/flipped-aurora/gin-vue-admin/server/global"
	"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
	systemRes "github.com/flipped-aurora/gin-vue-admin/server/model/system/response"
7
	"github.com/gin-gonic/gin"
Mr.奇淼('s avatar
Mr.奇淼( 已提交
8
	"github.com/mojocn/base64Captcha"
9
	"go.uber.org/zap"
10 11
)

L
liaoyongfu 已提交
12
// 当开启多服务器部署时,替换下面的配置,使用redis共享存储验证码
13
//var store = captcha.NewDefaultRedisStore()
Mr.奇淼('s avatar
Mr.奇淼( 已提交
14 15
var store = base64Captcha.DefaultMemStore

16 17 18
type BaseApi struct {
}

19
// @Tags Base
20 21 22 23
// @Summary 生成验证码
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
24
// @Success 200 {string} string "{"success":true,"data":{},"msg":"验证码获取成功"}"
25
// @Router /base/captcha [post]
26
func (b *BaseApi) Captcha(c *gin.Context) {
何秀钢 已提交
27
	// 字符,公式,验证码配置
Mr.奇淼('s avatar
Mr.奇淼( 已提交
28
	// 生成默认数字的driver
29
	driver := base64Captcha.NewDriverDigit(global.GVA_CONFIG.Captcha.ImgHeight, global.GVA_CONFIG.Captcha.ImgWidth, global.GVA_CONFIG.Captcha.KeyLong, 0.7, 80)
30
	//cp := base64Captcha.NewCaptcha(driver, store.UseWithCtx(c))   // v8下使用redis
Mr.奇淼('s avatar
Mr.奇淼( 已提交
31
	cp := base64Captcha.NewCaptcha(driver, store)
32 33 34
	if id, b64s, err := cp.Generate(); err != nil {
		global.GVA_LOG.Error("验证码获取失败!", zap.Any("err", err))
		response.FailWithMessage("验证码获取失败", c)
Mr.奇淼('s avatar
Mr.奇淼( 已提交
35
	} else {
36
		response.OkWithDetailed(systemRes.SysCaptchaResponse{
37 38 39
			CaptchaId:     id,
			PicPath:       b64s,
			CaptchaLength: global.GVA_CONFIG.Captcha.KeyLong,
Mr.奇淼('s avatar
Mr.奇淼( 已提交
40 41
		}, "验证码获取成功", c)
	}
42
}