Golang 生成 Token:
package main
import (
"fmt"
"time"
"github.com/dgrijalva/jwt-go"
)
func main() {
token := jwt.New(jwt.SigningMethodHS256)
claims := token.Claims.(jwt.MapClaims)
claims["id"] = 123456
claims["username"] = "test"
claims["exp"] = time.Now().Add(time.Hour * 24).Unix()
secret := []byte("mysecret")
tokenString, _ := token.SignedString(secret)
fmt.Println(tokenString)
}
PHP 验证 Token 并解码其中携带的数据:
<?php
require_once 'vendor/autoload.php';
use Firebase\JWT\JWT;
// The token to validate
$token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTIzNDU2LCJ1c2VybmFtZSI6InRlc3QiLCJleHAiOjE2NDE1NTQwMDV9.GfLkF7MnLlPmCqydSEknsxWQCJmsCvEdK0SwB4IIrDc';
// The secret key
$key = 'mysecret';
try {
// Validate the token and decode its payload
$decoded = JWT::decode($token, $key, array('HS256'));
// Access the payload values
echo $decoded->id . "\n";
echo $decoded->username . "\n";
} catch (Exception $e) {
// Handle invalid tokens
echo 'Invalid token: ' . $e->getMessage();
}
需要用到的 PHP JWT 库:
composer require firebase/php-jwt