跳到主要内容

认证 Docker Postgres JWT 示例

Github StackBlitz

此示例演示了一个 Go Fiber 应用的基础设置,它使用 Docker、PostgreSQL 和 JWT 进行认证。

描述

本项目提供了一个起点,用于构建使用 JWT 进行用户认证的 Web 应用。它利用 Docker 进行容器化,并使用 PostgreSQL 作为数据库。

要求

设置

  1. 克隆仓库

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

    DB_PORT=5432
    DB_USER=example_user
    DB_PASSWORD=example_password
    DB_NAME=example_db
    SECRET=example_secret
  3. 构建并启动 Docker 容器

    docker-compose build
    docker-compose up

API 和数据库现在应该正在运行。

数据库管理

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

docker-compose exec db psql -U <DB_USER>

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

API 端点

API 中提供以下端点

  • POST /api/user: 注册新用户。
  • POST /api/auth/login: 认证用户并返回 JWT。
  • GET /api/user/:id: 获取用户 (需要有效的 JWT)。
  • PATCH /api/user/:id: 更新用户 (需要有效的 JWT)。
  • DELETE /api/user/:id: 删除用户 (需要有效的 JWT)。

使用示例

  1. 注册新用户

    curl -X POST http://localhost:3000/api/user -d '{"username":"testuser", "password":"testpassword", "email": "test@email.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> 替换为从登录端点接收到的令牌。

结论

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

参考