golang通用后台管理系统10(退出登录,注销token)

1.实现思路:将登录用户的token加入黑名单

2.

复制代码
//1.2 用户退出
exploreRouter.POST("/logout", sysCtrl.Logout)

3.loginController.go

复制代码
//用户退出
func Logout(c *gin.Context) {
   logger := commonLog.InitLogger()

   sysUser := service.GetProfile1(c)
   fmt.Println("UUID=============================" + sysUser.Uuid)
   blacklist := service.NewBlacklist()
   logger.Println(constant.LOGINFO() + "用户名称为:"+sysUser.UserName +"; 退出成功!!!")

   // 将token添加到黑名单
   blacklist.AddToken(sysUser.Token)
}

4.LoginOutService.go

复制代码
package service
import (
"sync"
)

// Blacklist是一个简单的结构体,用于管理token黑名单
type Blacklist struct {
	mu    sync.Mutex
	tokens map[string]bool
}

// NewBlacklist创建一个新的Blacklist实例
func NewBlacklist() *Blacklist {
	return &Blacklist{
		tokens: make(map[string]bool),
	}
}

// AddToken将指定的token添加到黑名单中
func (b *Blacklist) AddToken(tokenString string) {
	b.mu.Lock()
	b.tokens[tokenString] = true
	b.mu.Unlock()
}

// IsTokenBlacklisted检查指定的token是否在黑名单中
func (b *Blacklist) IsTokenBlacklisted(tokenString string) bool {
	b.mu.Lock()
	defer b.mu.Unlock()
	b2 := b.tokens[tokenString]
	return b2 && b.tokens[tokenString] == true
}
相关推荐
喵了几个咪18 小时前
GoWind Flow 拆解:一个 Go 工作流引擎与它的双模式设计器
开发语言·人工智能·后端·golang
codeejun18 小时前
每日一Go·MySQL-14、慢 SQL 产生原因全解
sql·mysql·golang
利威尔xu4 天前
Go map 底层崩溃:3 个 goroutine 并发写同一张 map,fatal error 崩掉整个服务
golang·源码·map·并发·后端开发
利威尔xu5 天前
2026-11-08-Go-defer-panic-recover面试
面试·golang
JWASX6 天前
【Go】map 源码解析 - group
后端·golang·map·源码分析
联犀6 天前
纯 Go 的 CAD 开源库 go-cad:直接解析 DWG/DXF,现在也能导出 PDF
开发语言·golang·pdf
FungLeo7 天前
成为全栈·Go 后端篇·三轮代码审阅之后:把可读性和证据做成工程规则
golang·go·ast·静态检查·成为全栈·代码审阅
联犀7 天前
联犀 Go SIMD 实战:视频转码从 16.5ms 到 5.46ms
开发语言·golang·音视频
紧跟先前的步伐8 天前
Go AI Agent 实战 28|Agent 的预算、超时与停止条件
开发语言·人工智能·后端·ai·golang
利威尔xu8 天前
2026-11-05-Go内存管理面试
面试·golang