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
}
相关推荐
会编程的土豆13 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
basketball61614 小时前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang
Generalzy18 小时前
从本地 Demo 到生产级检索:Milvus 学习笔记(1)
golang·prompt·软件工程
go不是csgo19 小时前
GORM 上手:一个 main.go 跑通 Go 数据库增删改查
jvm·数据库·golang
知彼解己20 小时前
RAG 核心实战:检索增强生成
后端·golang·ai编程
子安柠21 小时前
Go语言并发编程:协程与管道详解
开发语言·后端·golang
basketball6161 天前
Go 语言从入门到进阶:5. 玩转Go函数
开发语言·后端·golang
不爱编程的小陈1 天前
Go内存模型与GC机制:高性能编程的核心
开发语言·后端·golang
go不是csgo1 天前
sync.Map 源码大变天:一棵 16 叉树如何干掉 read/dirty 双 Map
golang
jieyucx1 天前
Go 语言零基础入门:标准库 log 包完全教程
golang·日志·log