From d9ee6ebad7da01595bbce544538a41e589c1b81e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Mon, 9 Aug 2021 11:39:16 +0800 Subject: [PATCH] commit --- dsSzxy/.idea/workspace.xml | 33 +++---- .../CaptchaController/CaptchaController.go | 92 +++++++++++++++++++ .../ImRelateController/ImRelateController.go | 3 - dsSzxy/Router/CommonToolsRouter.go | 3 + dsSzxy/go.mod | 2 + dsSzxy/go.sum | 7 ++ 6 files changed, 119 insertions(+), 21 deletions(-) create mode 100644 dsSzxy/Business/CaptchaRelate/CaptchaController/CaptchaController.go diff --git a/dsSzxy/.idea/workspace.xml b/dsSzxy/.idea/workspace.xml index 227c7380..4709b380 100644 --- a/dsSzxy/.idea/workspace.xml +++ b/dsSzxy/.idea/workspace.xml @@ -5,13 +5,25 @@ + + + + + + + + + @@ -34,7 +47,7 @@ - + @@ -42,18 +55,11 @@ + - - - - - - - - @@ -72,15 +78,6 @@ - - - - - - - - - diff --git a/dsSzxy/Business/CaptchaRelate/CaptchaController/CaptchaController.go b/dsSzxy/Business/CaptchaRelate/CaptchaController/CaptchaController.go new file mode 100644 index 00000000..c3131dd9 --- /dev/null +++ b/dsSzxy/Business/CaptchaRelate/CaptchaController/CaptchaController.go @@ -0,0 +1,92 @@ +package CaptchaController + +import ( + "fmt" + "github.com/gin-gonic/gin" + "github.com/mojocn/base64Captcha" + "image/color" + "net/http" +) + +//模块的路由配置 +func Routers(r *gin.RouterGroup) { + rr := r.Group("/captchaRelate") + rr.GET("/GetOne", GetOne) + rr.GET("/Verify", Verify) +} + +// 设置自带的store +var store = base64Captcha.DefaultMemStore + +//存储验证码的结构 +type CaptchaResult struct { + Id string `json:"id"` + Base64Blob string `json:"base_64_blob"` +} + +// 生成图形化验证码 +func GetOne(c *gin.Context) { + id, b64s, err := CaptMake() + if err != nil { + c.JSON(http.StatusOK, gin.H{"success": false, "info": "发生错误!"}) + } + captchaResult := CaptchaResult{ + Id: id, + Base64Blob: b64s, + } + c.JSON(http.StatusOK, gin.H{"success": true, "captcha": captchaResult}) + return +} + +//验证captcha是否正确 +func Verify(c *gin.Context) { + id := c.PostForm("id") + capt := c.PostForm("capt") + + if id == "" || capt == "" { + c.JSON(http.StatusOK, gin.H{"success": false, "msg": "参数错误!"}) + } + + if CaptVerify(id, capt) == true { + c.JSON(http.StatusOK, gin.H{"success": true}) + } else { + c.JSON(http.StatusOK, gin.H{"success": false}) + } + return +} + +//生成验证码 +func CaptMake() (id, b64s string, err error) { + var driver base64Captcha.Driver + var driverString base64Captcha.DriverString + + // 配置验证码信息 + captchaConfig := base64Captcha.DriverString{ + Height: 60, + Width: 200, + NoiseCount: 0, + ShowLineOptions: 2 | 4, + Length: 4, + Source: "1234567890qwertyuioplkjhgfdsazxcvbnm", + BgColor: &color.RGBA{ + R: 3, + G: 102, + B: 214, + A: 125, + }, + Fonts: []string{"wqy-microhei.ttc"}, + } + + driverString = captchaConfig + driver = driverString.ConvertFonts() + captcha := base64Captcha.NewCaptcha(driver, store) + lid, lb64s, lerr := captcha.Generate() + return lid, lb64s, lerr +} + +//验证captcha是否正确 +func CaptVerify(id string, capt string) bool { + fmt.Println("id:" + id) + fmt.Println("capt:" + capt) + return store.Verify(id, capt, false) +} diff --git a/dsSzxy/Business/ImRelate/ImRelateController/ImRelateController.go b/dsSzxy/Business/ImRelate/ImRelateController/ImRelateController.go index 641f51eb..353f2359 100644 --- a/dsSzxy/Business/ImRelate/ImRelateController/ImRelateController.go +++ b/dsSzxy/Business/ImRelate/ImRelateController/ImRelateController.go @@ -21,10 +21,7 @@ import ( //模块的路由配置 func Routers(r *gin.RouterGroup) { rr := r.Group("/imRelate") - rr.POST("/fileUpload", fileUpload) - - return } func fileUpload(c *gin.Context) { diff --git a/dsSzxy/Router/CommonToolsRouter.go b/dsSzxy/Router/CommonToolsRouter.go index 0dfe64d5..04279d34 100644 --- a/dsSzxy/Router/CommonToolsRouter.go +++ b/dsSzxy/Router/CommonToolsRouter.go @@ -1,6 +1,7 @@ package Router import ( + "dsSzxy/Business/CaptchaRelate/CaptchaController" "dsSzxy/Business/ImRelate/ImRelateController" "dsSzxy/Business/MinIORelate/MinIORelateController" "github.com/gin-gonic/gin" @@ -14,4 +15,6 @@ func GinRouter(r *gin.Engine) { MinIORelateController.Routers(rr) //IM ImRelateController.Routers(rr) + //Captcha + CaptchaController.Routers(rr) } diff --git a/dsSzxy/go.mod b/dsSzxy/go.mod index 969d01e4..8746a3d3 100644 --- a/dsSzxy/go.mod +++ b/dsSzxy/go.mod @@ -16,6 +16,7 @@ require ( github.com/go-redis/redis v6.15.9+incompatible // indirect github.com/go-sql-driver/mysql v1.6.0 // indirect github.com/minio/minio-go/v6 v6.0.57 // indirect + github.com/mojocn/base64Captcha v1.3.5 // indirect github.com/pkg/sftp v1.13.1 // indirect github.com/satori/go.uuid v1.2.0 // indirect github.com/syndtr/goleveldb v1.0.0 // indirect @@ -23,6 +24,7 @@ require ( github.com/xormplus/builder v0.0.0-20200331055651-240ff40009be // indirect github.com/xormplus/xorm v0.0.0-20210512135344-8123d584d5f5 // indirect golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b // indirect + golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d // indirect golang.org/x/net v0.0.0-20210614182718-04defd469f4e // indirect golang.org/x/text v0.3.6 // indirect gopkg.in/flosch/pongo2.v3 v3.0.0-20141028000813-5e81b817a0c4 // indirect diff --git a/dsSzxy/go.sum b/dsSzxy/go.sum index caee5d2f..f4196f2c 100644 --- a/dsSzxy/go.sum +++ b/dsSzxy/go.sum @@ -36,6 +36,8 @@ github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGK github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= @@ -71,6 +73,8 @@ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OH github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mojocn/base64Captcha v1.3.5 h1:Qeilr7Ta6eDtG4S+tQuZ5+hO+QHbiGAJdi4PfoagaA0= +github.com/mojocn/base64Captcha v1.3.5/go.mod h1:/tTTXn4WTpX9CfrmipqRytCpJ27Uw3G6I7NcP2WwcmY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -107,8 +111,11 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnk golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b h1:7mWr3k41Qtv8XlltBkDkl8LoP3mpSgBW8BUoxtEdbXg= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/image v0.0.0-20190501045829-6d32002ffd75/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 h1:hVwzHzIUGRjiF7EcUjqNxk3NCfkPxbDKRdnNE1Rpg0U= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d h1:RNPAfi2nHY7C2srAV8A49jpsYr0ADedCk1wq6fTMTvs= +golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=