Gin 中使用 base64Captcha 生成图形验证码分布式架构-redis方案

本文介绍了如何在Gin web框架中利用base64Captcha库生成图形验证码,并结合Redis实现分布式架构。通过创建Redis客户端并定义RedisStore结构体来存储和检索验证码,确保在多台服务器上的一致性。验证码的有效时间为2分钟,验证通过后会从Redis中删除。
摘要由CSDN通过智能技术生成

本文章向大家介绍Gin 中使用 base64Captcha 生成图形验证码分布式架构-redis方案,主要包括Gin 中使用 base64Captcha 生成图形验证码分布式架构-redis方案使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Gin 中使用 base64Captcha 生成图形验证码分布式架构-redis方案

多台服务器上,分布式,

base64Captcha 的数据存储到 Redis 中

redis地址:github.com/go-redis/redis/v8
go get -u  github.com/go-redis/redis/v8

连接redis: redisCore.go

package models


import (
	"context"
	"github.com/go-redis/redis/v8"
)


//全局定义
var (
	RedisDb *redis.Client
)
//创建 redis 链接
func init() {
	var ctx = context.Background()
	RedisDb = redis.NewClient(&redis.Options{
		Addr: "111.229.91.20:6379",
		Password: "chengqiang", // no password set
		DB: 0, // use default DB
		 })
	_, err := RedisDb.Ping(ctx).Result()
	if err != nil {
		//连接失败
		println(err)
	} }

配置用于存验证码的redis仓库:redisStore.go

package models

import (
	"context"
	"fmt"
	"time"
)

var ctx = context.Background()

const CAPTCHA = "captcha:"

type RedisStore struct {
}

//实现设置captcha的方法
func (r RedisStore) Set(id string, value string) error {
	key := CAPTCHA + id
	//time.Minute*2:有效时间2分钟
	err := RedisDb.Set(ctx, key, value, time.Minute*2).Err()

	return err
}

//实现获取captcha的方法
func (r RedisStore) Get(id string, clear bool) string {
	key := CAPTCHA + id
	val, err := RedisDb.Get(ctx, key).Result()
	if err != nil {
		fmt.Println(err)
		return ""
	}
	if clear {
		//clear为true,验证通过,删除这个验证码
		err := RedisDb.Del(ctx, key).Err()
		if err != nil {
			fmt.Println(err)
			return ""
		}
	}
	return val
}

//实现验证captcha的方法
func (r RedisStore) Verify(id, answer string, clear bool) bool {
	v := RedisStore{}.Get(id, clear)
	//fmt.Println("key:"+id+";value:"+v+";answer:"+answer)
	return v == answer
}

验证码中进行调用库: captcha.go

//配置RedisStore RedisStore实现base64Captcha.Store的接口
var store  base64Captcha.Store = RedisStore{}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值