jwt_encode is not working
yingshaoxo opened this issue · comments
The token_string
returns nothing
func Jwt_encode(data map[string]interface{}, secret_string string) string {
new_data := jwt.MapClaims{}
for key, value := range data {
new_data[key] = value
}
token := jwt.NewWithClaims(jwt.SigningMethodHS256, new_data)
token_string, _ := token.SignedString(secret_string)
return token_string
}
package main
import (
"log"
"testing"
"github.com/yingshaoxo/gopython/jwt_tool"
)
func Test_jwt(t *testing.T) {
secret := "no way"
data := make(map[string]interface{})
data["user"] = "yingshaoxo"
jwt_string := jwt_tool.Jwt_encode(data, secret)
log.Println(jwt_string)
new_data, _ := jwt_tool.Jwt_decode(jwt_string, secret)
log.Println(data)
log.Println(new_data)
}
You are using string
as the key for an HMAC. The signing method expects a []byte
as seen in the README "The HMAC signing method (HS256,HS384,HS512) expect []byte values for signing and validation" or in the example:
Lines 16 to 29 in 0d2f0d4
Note, that you are intentionally ignoring the error of SignedString
. This error contains more information why it is failing and this case would you provide with an error that you are using the wrong key type for this signing algorithm.