11 Star 90 Fork 20

goflyfox / gtoken

 / 详情

loginOut退出登陆时,调用了退出接口,但redis里面不会删除,只能等过期

已完成
创建于  
2021-09-28 08:16
	GfToken    = &gtoken.GfToken{
		CacheMode:        g.Cfg().GetInt8("gToken.system.CacheMode"),
		CacheKey:         g.Cfg().GetString("gToken.system.CacheKey"),
		Timeout:          g.Cfg().GetInt("gToken.system.Timeout"),
		MaxRefresh:       g.Cfg().GetInt("gToken.system.MaxRefresh"),
		TokenDelimiter:   g.Cfg().GetString("gToken.system.TokenDelimiter"),
		EncryptKey:       g.Cfg().GetBytes("gToken.system.EncryptKey"),
		AuthFailMsg:      g.Cfg().GetString("gToken.system.AuthFailMsg"),
		MultiLogin:       MultiLogin,
		LoginPath:        "/login",
		LoginBeforeFunc:  Auth.login,
		LoginAfterFunc:   Auth.loginAfter,
		LogoutPath:       "/logout",
		AuthExcludePaths: g.SliceStr{"/login"},
		AuthAfterFunc:    Auth.authAfterFunc,
		LogoutBeforeFunc: Auth.loginOut,
	}
	//后台退出登陆
func (c *auth) loginOut(r *ghttp.Request) bool {
	//删除在线用户状态
	authHeader := r.Header.Get("Authorization")
	if authHeader != "" {
		parts := strings.SplitN(authHeader, " ", 2)
		if len(parts) == 2 && parts[0] == "Bearer" && parts[1] != "" {
			//删除在线用户状态操作
			//service.Online.DeleteOnlineByToken(parts[1])
		}
	}
	g.Log().Info("用户登出", authHeader)
	authHeader = r.GetString("token")
	if authHeader != "" {
		//删除在线用户状态操作
		//service.Online.DeleteOnlineByToken(authHeader)
	}
	response.JsonExit(r, 200, "用户登出成功")
	return true
}
	}```

评论 (2)

强仔 创建了任务
强仔 关联仓库设置为goflyfox/gtoken
强仔 修改了描述
展开全部操作日志

你打印出来的token是什么样子?
正常应该传到后段的是 Bearer {token},看一下日志有没有warn或者error

正常 LoginBeforeFunc 返回true就会调用删除token方法

我这边测试,删除token正常~可以看下日志,再就是debug看下是否调用removeToken方法;
gf版本和gtoken版本也发下把

Fly的狐狸 任务状态待办的 修改为已完成

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
3244 flyfox 1621826689 1507886 xfaw 1644832624
Go
1
https://gitee.com/goflyfox/gtoken.git
git@gitee.com:goflyfox/gtoken.git
goflyfox
gtoken
gtoken

搜索帮助