1 Star 2 Fork 0

Eolink/apinto-dashboard

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
session.go 1014 Bytes
一键复制 编辑 原始数据 按行查看 历史
kingsword 提交于 2022-04-21 15:41 +08:00 . 编译
package apinto_dashboard
import "sync"
type SessionManager struct {
lock sync.RWMutex
users map[string]string
sessions map[string]UserDetails
}
func NewSessionManager() *SessionManager {
return &SessionManager{
lock: sync.RWMutex{},
users: make(map[string]string),
sessions: make(map[string]UserDetails),
}
}
func (sm *SessionManager) Get(session string) (UserDetails, bool) {
sm.lock.RLock()
defer sm.lock.RUnlock()
details, has := sm.sessions[session]
return details, has
}
func (sm *SessionManager) Delete(session string) {
sm.lock.Lock()
defer sm.lock.Unlock()
old, has := sm.sessions[session]
if has {
delete(sm.sessions, session)
if old != nil {
delete(sm.users, old.GetUsername())
}
}
}
func (sm *SessionManager) Set(session string, details UserDetails) {
sm.lock.Lock()
defer sm.lock.Unlock()
old, has := sm.users[details.GetUsername()]
if has {
delete(sm.sessions, old)
}
sm.users[details.GetUsername()] = session
sm.sessions[session] = details
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/eolink_admin/apinto-dashboard.git
git@gitee.com:eolink_admin/apinto-dashboard.git
eolink_admin
apinto-dashboard
apinto-dashboard
main

搜索帮助