1 Star 0 Fork 0

曾广宇/mxx-core-v2

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
gin_session.go 2.02 KB
一键复制 编辑 原始数据 按行查看 历史
曾广宇 提交于 2024-06-12 09:11 +08:00 . 修正数据库链接 sqlx 为 xorm
package mweb
import (
"fmt"
"gitee.com/dennis-mxx/mxx-core-v2/mdb"
"gitee.com/dennis-mxx/mxx-core-v2/menv"
"gitee.com/dennis-mxx/mxx-core-v2/mredis"
"github.com/gin-gonic/gin"
"github.com/gorilla/sessions"
)
var store sessions.Store
func InitSession() {
config := menv.Environment.Gin
if config.Session == "" {
config.Session = "cookie"
}
if config.SessionId == "" {
config.SessionId = "sessionId"
}
if config.SessionSecret == "" {
config.SessionSecret = "v0XqbECSxbhMVocsJLaYPGabE7236Agu"
}
switch config.Session {
case "cookie":
store = sessions.NewCookieStore([]byte(config.SessionSecret))
break
case "file":
if config.SessionFile == "" {
panic("session is file ,sessionFile is necessary")
}
store = sessions.NewFilesystemStore(config.SessionFile, []byte(config.SessionSecret))
break
case "redis":
store = NewRedisStore(mredis.RedisClient, menv.Environment.ServerName, []byte(config.SessionSecret))
break
case "mysql":
store = NewMysqlStore(mdb.Engine, menv.Environment.ServerName, []byte(config.SessionSecret))
break
case "sqlite":
store = NewMysqlStore(mdb.Engine, menv.Environment.ServerName, []byte(config.SessionSecret))
break
default:
panic(fmt.Sprintf("init session store failure , unsupported session type [%s]", config.Session))
}
}
// SessionCtx
// Stx 此处是获取session 的前置句柄,如需要对session进行安全验证操作请在初始化完成后覆盖
type SessionCtx interface {
GetSession() (*sessions.Session, error)
Save()
}
type SessionCtxDefault struct {
ctx *gin.Context
session *sessions.Session
sessionId string
}
func (domain *SessionCtxDefault) GetSession() (*sessions.Session, error) {
ctx := domain.ctx
if domain.session != nil {
return domain.session, nil
} else {
s, err := store.Get(ctx.Request, domain.sessionId)
domain.session = s
return s, err
}
}
func (domain *SessionCtxDefault) Save() {
if domain.session != nil {
err := domain.session.Save(domain.ctx.Request, domain.ctx.Writer)
if err != nil {
panic(err)
}
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/dennis-mxx/mxx-core-v2.git
git@gitee.com:dennis-mxx/mxx-core-v2.git
dennis-mxx
mxx-core-v2
mxx-core-v2
v0.4.74

搜索帮助