From b0e9c3873288fa01864f04871ec80835cd75df95 Mon Sep 17 00:00:00 2001 From: HFO4 <912394456@qq.com> Date: Wed, 27 Nov 2019 19:53:39 +0800 Subject: [PATCH] Feat: redis for session storing --- conf/conf.ini | 5 +++++ middleware/session.go | 15 +++++++++++---- pkg/conf/conf.go | 15 +++++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/conf/conf.ini b/conf/conf.ini index adb5a67..3f9c0fc 100644 --- a/conf/conf.ini +++ b/conf/conf.ini @@ -10,6 +10,11 @@ Host = 127.0.0.1:3306 Name = v3 TablePrefix = v3_ +[Redis] +Server = 127.0.0.1:6379 +Password = 52121225 +DB = 0 + [Captcha] Height = 60 Width = 200 diff --git a/middleware/session.go b/middleware/session.go index 239eb70..bf739d5 100644 --- a/middleware/session.go +++ b/middleware/session.go @@ -1,6 +1,7 @@ package middleware import ( + "github.com/HFO4/cloudreve/pkg/conf" "github.com/HFO4/cloudreve/pkg/util" "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/memstore" @@ -9,13 +10,19 @@ import ( ) // Store session存储 -var Store memstore.Store +var Store redis.Store // Session 初始化session func Session(secret string) gin.HandlerFunc { - Store, err := redis.NewStore(10, "tcp", "127.0.0.1:6379", "52121225", []byte("secret")) - if err != nil { - util.Log().Panic("无法连接到Redis:%s", err) + if conf.RedisConfig.Server != "" { + // 如果配置使用了Redis + var err error + Store, err = redis.NewStoreWithDB(10, "tcp", conf.RedisConfig.Server, conf.RedisConfig.Password, conf.RedisConfig.DB, []byte(secret)) + if err != nil { + util.Log().Panic("无法连接到Redis:%s", err) + } + } else { + Store = memstore.NewStore([]byte(secret)) } // Also set Secure: true if using SSL, you should though Store.Options(sessions.Options{HttpOnly: true, MaxAge: 7 * 86400, Path: "/"}) diff --git a/pkg/conf/conf.go b/pkg/conf/conf.go index 6992db8..bfbdc25 100644 --- a/pkg/conf/conf.go +++ b/pkg/conf/conf.go @@ -38,6 +38,20 @@ type captcha struct { CaptchaLen int `validate:"gt=0"` } +// redis 配置 +type redis struct { + Server string + Password string + DB string +} + +// RedisConfig Redis服务器配置 +var RedisConfig = &redis{ + Server: "", + Password: "", + DB: "0", +} + // DatabaseConfig 数据库配置 var DatabaseConfig = &database{ Type: "UNSET", @@ -79,6 +93,7 @@ func Init(path string) { "Database": DatabaseConfig, "System": SystemConfig, "Captcha": CaptchaConfig, + "Redis": RedisConfig, } for sectionName, sectionStruct := range sections { err = mapSection(sectionName, sectionStruct)