我有这样的 curl 请求:
curl -XPOST -H 'Content-Type: application/json' -H 'Authorization: sso-jwt JWT_STRING' http://localhost:50051/doSomething -d '{"note": "这是一个注意"}'
我正在使用 echo.Context 来解析这个请求。我需要从 JWT_STRING 中提取通用名称 (CN)。这是我得到的结果:
tokenString, err := request.HeaderExtractor{"Authorization"}.ExtractToken(c.Request())
if err == nil {
fmt.Println(tokenString)
} else {
fmt.Println(err)
}
上面的打印:
sso-jwt JWT_STRING
而我想要 JWT_STRING
。
有没有更好的方法来实现这一点? (除了使用字符串操作仅提取 JWT_STRING
)。
此代码位于我的处理函数中,它具有以下签名:
func (lock *Lock) DoSomething(c echo.Context) 错误 {}
编辑
以下对我有用:
reqToken := c.Request().Header.Get("Authorization")
splitToken := strings.Split(reqToken, "sso-jwt ")
reqToken = splitToken[1]
fmt.Println(reqToken)
但是,这是实现这一目标的最佳方式吗?
最佳答案
实现此目的最简单的方法是使用 strings.TrimPrefix
函数,如下所示:
token := strings.TrimPrefix(c.Request().Header.Get("Authorization"), "sso-jwt ")
这是正常的,通常是我用来处理在身份验证中间件中检索 Bearer JWT 的过程的一部分。
关于http - 如何从授权 header 中提取 JWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55659585/