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
}
相关推荐
何以解忧,唯有..9 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
踏着七彩祥云的小丑9 天前
Go学习第9天:并发编程 + 文件操作 + 正则表达式
学习·golang·正则表达式·go
JCGKS9 天前
Go `init` 函数:包初始化顺序到底是怎样的
golang·init·init执行顺序
何以解忧,唯有..9 天前
Go语言中的const:常量声明与iota枚举详解
java·开发语言·golang
geovindu9 天前
go: Reactor Pattern
开发语言·后端·设计模式·golang·反应器模式
記億揺晃着的那天10 天前
Java 调用外部 Go 程序的实践:ProcessBuilder 在生产环境中的应用
java·golang·processbuilder
jingling55510 天前
go | 环境安装和快速入门
开发语言·后端·golang
java_cj10 天前
从kubectl学Visitor模式:如何优雅处理多态数据结构的遍历
云原生·golang·k8s·访问者模式
何以解忧,唯有..10 天前
Go语言类型转换详解:从基础到进阶实践
开发语言·后端·golang
何以解忧,唯有..10 天前
Go 语言指针类型详解:从基础到实战
开发语言·后端·golang