Feat: redis for session storing

pull/247/head
HFO4 5 years ago
parent 7d5016ae40
commit b0e9c38732

@ -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

@ -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: "/"})

@ -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)

Loading…
Cancel
Save