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
}
相关推荐
念何架构之路2 小时前
go-grpc设计思想
开发语言·后端·golang
microrain3 小时前
SagooIoT 的缓存换后端只改一行配置,文件后端连 Redis 都不需要
物联网·缓存·golang·sagooiot
喵了几个咪5 小时前
GoWind ShortPlay 深度拆解:三服务 BFF + Core,一条请求的完整工程链路
golang·gowind
紧跟先前的步伐1 天前
Go AI Agent 实战 06|JSON 结构化输出与 Go 后端校验
人工智能·ai·golang
紧跟先前的步伐2 天前
Go AI Agent 实战 08|HTTP 模型 API 的工作原理与请求流程
人工智能·http·ai·golang
紧跟先前的步伐2 天前
Go AI Agent 实战 07|模型幻觉、能力边界与成本控制
大数据·人工智能·golang
利威尔xu2 天前
Go GMP 调度器 10 个高频追问:3 个线上故障让 P99 从 80ms 飙到 2s、10 万 goroutine 泄漏
开发语言·后端·面试·性能优化·golang
FfHUCisI2 天前
无锁 Reactor 网络模型与 gnet / evio 架构拆解
服务器·开发语言·后端·golang
紧跟先前的步伐2 天前
Go AI Agent 实战 05|Temperature 与生成参数:让模型输出可控
java·人工智能·golang
浮尘笔记2 天前
我用 Go 写了个手机端「远程 AI 开发控制台」(开源)
人工智能·智能手机·golang