跳到主要内容

认证 JWT 示例

Github StackBlitz

此示例演示了一个使用 JWT 进行身份验证的 Go Fiber 应用的样板设置。

描述

本项目提供了一个使用 JWT 进行用户身份验证的 Web 应用的起点。它利用 Fiber 作为 Web 框架,并使用 GORM 作为 ORM。

要求

  • Go 1.18 或更高版本
  • Git

设置

  1. 克隆仓库

    git clone https://github.com/gofiber/recipes.git
    cd recipes/auth-jwt
  2. .env 文件中设置环境变量

    DB_PORT=5432
    DB_USER=example_user
    DB_PASSWORD=example_password
    DB_NAME=example_db
    SECRET=example_secret
  3. 安装依赖

    go mod download
  4. 运行应用

    go run main.go

API 现在应该运行在 http://localhost:3000

数据库管理

您可以使用以下命令通过 psql 管理数据库

psql -U <DB_USER> -d <DB_NAME> -h localhost -p <DB_PORT>

<DB_USER><DB_NAME><DB_PORT> 替换为您的 .env 文件中的值。

API 端点

API 中提供以下端点

  • POST /api/auth/register:注册新用户。
  • POST /api/auth/login:验证用户并返回 JWT。
  • GET /api/user/:id:获取用户(需要有效的 JWT)。
  • POST /api/user:创建新用户。
  • PATCH /api/user/:id:更新用户(需要有效的 JWT)。
  • DELETE /api/user/:id:删除用户(需要有效的 JWT)。
  • GET /api/product:获取所有产品。
  • GET /api/product/:id:获取产品。
  • POST /api/product:创建新产品(需要有效的 JWT)。
  • DELETE /api/product/:id:删除产品(需要有效的 JWT)。

使用示例

  1. 注册新用户

    curl -X POST http://localhost:3000/api/auth/register -d '{"username":"testuser", "password":"testpassword", "email":"test@example.com"}' -H "Content-Type: application/json"
  2. 登录获取 JWT

    curl -X POST http://localhost:3000/api/auth/login -d '{"username":"testuser", "password":"testpassword"}' -H "Content-Type: application/json"
  3. 访问受保护的路由

    curl -H "Authorization: Bearer <JWT>" http://localhost:3000/api/user/1

<JWT> 替换为从登录端点获取的令牌。

结论

此示例提供了一个使用 JWT 认证的 Go Fiber 应用的基本设置。它可以进一步扩展和定制,以满足更复杂应用的需求。

参考资料