Поэтому у меня есть функция getToken()
Golang: возвращение указатели и derefrencing
func getToken() jwt.MapClaims {
tokenString := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkYW0iLCJwYXNzd29yZCI6InRlc3QiLCJpYXQiOjE0ODcyMDY2OTIsImV4cCI6MTUxODc2NDI5Mn0.6LQo_gRwXiFBvNIJOwtf9UuxoQMZZ3XNILTnU-46-Zg"
token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"])
}
hmacSampleSecret := []byte("supersecretkittysecret")
return hmacSampleSecret, nil
})
if err != nil {
println("error")
}
if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid {
return claims
} else {
return nil
}
}
Тогда соответствующий вызов:
res := getToken()
println(res["username"])
Почему res["username"]
равна двум адресов памяти (0x2b3c20,0xc420075420)
? Это должна быть строка типа adam
. Я также пробовал func getToken() *jwt.MapClaims
и return &claims
, но это все равно не помогло.
вы пытались использовать '* Рез [" имя пользователя] ' –
@GujaratSantana возвращает ошибку? 'invalid косвенное значение res [" username "] (type interface {})' – adamSiwiec
Вы пытались 'fmt.Println (res [" username "])' вместо 'println'? –