JSON Web 令牌 (JWT) 是处理在线身份验证的流行方法,您可以使用任何服务器端编程语言实现 JWT 身份验证。
对于一般的 JWT 阅读背景知识,我建议通过 LogRocket 博客上的这些文章了解更多关于JWT、最佳实践和使用 JWT 保护 RESTful API的信息。
本文旨在帮助您开始使用该包在您的 Go Web 应用程序中实现 JWT 身份验证。golang-jwt
由于其特性和易用性,该包是在 Go 中实现 JWT 最流行的包。该包提供了生成和验证 JWT 的功能。golang-jwt``golang-jwt
先决条件
您需要满足这些基本要求才能充分利用本教程。
-
在您的机器上安装 Go 1.16 或更高版本(出于安全原因)
-
使用 Go 或任何其他语言构建 Web 应用程序的经验(可选)
目录
-
开始使用包Golang-JWT
-
在 Go 中设置 Web 服务器
-
使用包生成JWTGolang-JWT
-
验证 JWT 令牌
-
从 JWT 令牌中提取声明
Golang-JWT 包入门
设置好 Go 工作区并初始化 Go 模块文件后,在终端上的工作区目录中运行以下命令以安装包:go.mod``golang-jwt
go get github.com/golang-jwt/jwt
安装后,创建一个 Go 文件并导入这些包和模块。golang-jwt
import ( "log" "encoding/json" "github.com/golang-jwt/jwt" "net/http" "time" )
您将在本教程中使用这些包来记录错误、设置服务器和设置令牌过期时间。
在 Go 中设置 Web 服务器
让我们从创建一个简单的 Web 服务器开始,该服务器的端点将由 JWT 保护。
func main() { http.HandleFunc("/home", handlePage) err := http.ListenAndServe(":8080", nil) if err != nil { log.Println("There was an error listening on port :8080", err) } }
主函数使用handlePage您将设置的处理程序函数设置主端点。该handlePage函数将使用 JWT 保护页面。服务器设置为侦听端口,但您可以使用您选择的任何端口。:8080
如果在请求正文编码后请求被授权,则处理函数将返回结构的编码 JSON 作为对客户端的响应handlePage。Message
type Message struct { Status string `json:"status"` Info string `json:"info"` } func handlePage(writer http.ResponseWriter, request *http.Request) { writer.Header().Set("Content-Type", "applica