You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何注销通过Gocloak LoginAdmin创建的管理员会话?

管理员会话注销方法

你可以用以下两种方式注销管理员登录产生的会话,不需要额外的clientsecret:

1. 用Refresh Token撤销当前会话

利用登录时拿到的refresh_token,调用RevokeToken方法就能直接结束当前会话:

// 用登录返回的token里的RefreshToken注销会话
err := client.RevokeToken(ctx, token.RefreshToken, realm, "", "")
if err != nil {
    log.Error("撤销令牌失败: ", err.Error())
    return
}

这里最后两个空字符串对应clientID和clientSecret,管理员通过LoginAdmin获取的令牌不需要这两个参数,直接留空即可。

2. 注销该管理员的所有活跃会话

如果需要一次性注销这个管理员的所有在线会话,可先获取用户ID,再调用LogoutUserSessions方法:

// 先根据用户名获取当前管理员的用户ID
user, err := client.GetUserByUsername(ctx, token.AccessToken, realm, username)
if err != nil {
    log.Error("获取用户信息失败: ", err.Error())
    return
}

// 注销该用户的所有会话
err = client.LogoutUserSessions(ctx, token.AccessToken, realm, user.ID)
if err != nil {
    log.Error("注销用户所有会话失败: ", err.Error())
    return
}

这个方法依赖管理员的access token(需要用户拥有manage-users类的权限),同样不需要clientsecret。

注意点

  • 要确保管理员账号有管理用户会话的权限,不然调用LogoutUserSessions会报错。
  • RevokeToken调用后,对应的refresh token会失效,无法再用它获取新的access token,当前会话直接终止。

内容的提问来源于stack exchange,提问作者nltbo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 19:02:32