我有这样的卷曲请求:
curl -XPOST -H 'Content-Type: application/json' -H 'Authorization: sso-jwt JWT_STRING' http://localhost:50051/doSomething -d '{"note": "Here's a 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) error {}
编辑
以下对我有用:
reqToken := c.Request().Header.Get("Authorization")
splitToken := strings.Split(reqToken, "sso-jwt ")
reqToken = splitToken[1]
fmt.Println(reqToken)
但是,这是实现这一目标的最佳方法吗?
答案 0 :(得分:1)
最简单的方法是使用strings.TrimPrefix
函数,如下所示:
token := strings.TrimPrefix(c.Request().Header.Get("Authorization"), "sso-jwt ")
这是正常现象,通常是我用来在身份验证中间件中检索Bearer JWT的过程的一部分。