目录
一、导入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
}