首页
/ jwt-go 库使用与技术文档

jwt-go 库使用与技术文档

2024-12-29 14:58:07作者:田桥桑Industrious

1. 安装指南

jwt-go 是一个 Go 语言的 JSON Web Tokens(JWT)库。要安装 jwt-go,可以使用 go get 命令:

go get github.com/dgrijalva/jwt-go

由于该项目已不再维护,推荐使用新的库:github.com/golang-jwt/jwt。可以通过以下命令安装:

go get github.com/golang-jwt/jwt

确保使用的 Go 版本至少为 1.8.3,以避免已知的加密漏洞。

2. 项目的使用说明

jwt-go 库支持 JWT 的解析、验证以及生成和签名。以下是一个简单的使用示例:

生成和签名 JWT

package main

import (
    "github.com/golang-jwt/jwt"
    "time"
)

func main() {
    // 创建一个新的 JWT claim
    claims := jwt.MapClaims{
        "sub": "1234567890",
        "name": "John Doe",
        "admin": true,
        "exp": time.Now().Add(time.Hour * 24).Unix(),
    }

    // 创建一个新的 JWT token
    token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)

    // 使用密钥签名 token
    signedToken, err := token.SignedString([]byte("your-256-bit-secret"))
    if err != nil {
        panic(err)
    }

    // 输出签名后的 token
    println(signedToken)
}

解析和验证 JWT

package main

import (
    "github.com/golang-jwt/jwt"
    "fmt"
)

func main() {
    // 用于验证的 token
    var tokenString = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"

    // 解析 token
    token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
        // 确认 signing method
        if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
            return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"])
        }
        // 返回密钥
        return []byte("your-256-bit-secret"), nil
    })

    if err != nil {
        panic(err)
    }

    // 断言 token 为 MapClaims
    claims, ok := token.Claims.(jwt.MapClaims)
    if !ok || !token.Valid {
        panic("Invalid token")
    }

    // 使用 token 中的 claim
    fmt.Println("Subject:", claims["sub"])
    fmt.Println("Name:", claims["name"])
}

3. 项目 API 使用文档

jwt-go 的 API 文档可以在 Godoc 上找到。以下是一些关键接口的简要描述:

  • jwt.NewWithClaims(method jwt.SigningMethod, claims interface{}): 创建一个新的 JWT token,其中 method 是签名方法,claims 是 JWT 中的 claim。
  • token.SignedString(key interface{}): 使用给定的密钥对 token 进行签名,返回签名后的 string。
  • jwt.Parse(tokenString string, keyFunc Keyfunc): 解析和验证 JWT token。

更多详细信息和示例,请参考 Godoc 文档。

4. 项目安装方式

如前所述,使用 go get 命令安装 jwt-go 库。确保 Go 环境已经配置正确,并且使用的 Go 版本至少为 1.8.3。

go get github.com/golang-jwt/jwt

安装完成后,可以在 Go 项目中导入 github.com/golang-jwt/jwt 包并使用其功能。

登录后查看全文
热门项目推荐
相关项目推荐