49 lines
882 B
Go
49 lines
882 B
Go
package types
|
|
|
|
import (
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/gofiber/fiber/v2/middleware/session"
|
|
)
|
|
|
|
// LogtoSessionStorage
|
|
// @description: 实现Logto会话存储接口
|
|
type LogtoSessionStorage struct {
|
|
Store *session.Store
|
|
Ctx *fiber.Ctx
|
|
}
|
|
|
|
// GetItem
|
|
// @description: 获取会话项
|
|
// @receiver storage
|
|
// @param key
|
|
// @return string
|
|
func (storage *LogtoSessionStorage) GetItem(key string) string {
|
|
sess, err := storage.Store.Get(storage.Ctx)
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
v := sess.Get(key)
|
|
if v == nil {
|
|
return ""
|
|
}
|
|
str, ok := v.(string)
|
|
if !ok {
|
|
return ""
|
|
}
|
|
return str
|
|
}
|
|
|
|
// SetItem
|
|
// @description: 设置会话项
|
|
// @receiver storage
|
|
// @param key
|
|
// @param value
|
|
func (storage *LogtoSessionStorage) SetItem(key, value string) {
|
|
sess, err := storage.Store.Get(storage.Ctx)
|
|
if err != nil {
|
|
return
|
|
}
|
|
sess.Set(key, value)
|
|
_ = sess.Save()
|
|
}
|