三十九、登陆-sessionid持久化

目录

一、导入uuid依赖

二、集成redis连接

1、声明rdb

2、添加连接函数

3、初始化

 三、完成生成sessionID方法

四、在login方法中添加生成sessionID方法


一、导入uuid依赖

 go get github.com/google/uuid

二、集成redis连接

1、声明rdb
type CmsApp struct {
	db  *gorm.DB
	rdb *redis.Client
}
2、添加连接函数
func connRdb(app *CmsApp) {
	rdb := redis.NewClient(&redis.Options{
		Addr:     "localhost:6379",
		Password: "", // no password set
		DB:       0,  // use default DB
	})
	//在go语言中_代表省略掉其中一个返回值
	_, err := rdb.Ping(context.Background()).Result()
	if err != nil {
		panic(err)
	}
	app.rdb = rdb
}
3、初始化
func NewCmsApp() *CmsApp {
	app := &CmsApp{}
	connDB(app)
	connRdb(app)
	return app
}

 三、完成生成sessionID方法

// 生成sessionID
func (c *CmsApp) generateSessionID(ctx context.Context, userID string) (string, error) {
	//uuid生成uuid方法
	sessionID := uuid.New().String()
	sessionKey := fmt.Sprintf("session_id:%s", userID)
	err := c.rdb.Set(ctx, sessionKey, sessionID, 8*time.Hour).Err()
	if err != nil {
		fmt.Printf("rdb.Set err: %+v\n", err)
		return "", err
	}
	//todo 保存sessionID
	return sessionID, nil
}

四、在login方法中添加生成sessionID方法

//生成sessionid
	sessionID, err := c.generateSessionID(context.Background(), userID)
	if err != nil {
		ctx.JSON(http.StatusInternalServerError, gin.H{"error": "系统错误,请稍后重试"})
		return
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值