认证 JWT 示例
此示例演示了一个使用 JWT 进行身份验证的 Go Fiber 应用的样板设置。
描述
本项目提供了一个使用 JWT 进行用户身份验证的 Web 应用的起点。它利用 Fiber 作为 Web 框架,并使用 GORM 作为 ORM。
要求
设置
-
克隆仓库
git clone https://github.com/gofiber/recipes.git
cd recipes/auth-jwt -
在
.env
文件中设置环境变量DB_PORT=5432
DB_USER=example_user
DB_PASSWORD=example_password
DB_NAME=example_db
SECRET=example_secret -
安装依赖
go mod download
-
运行应用
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)。
使用示例
-
注册新用户
curl -X POST http://localhost:3000/api/auth/register -d '{"username":"testuser", "password":"testpassword", "email":"test@example.com"}' -H "Content-Type: application/json"
-
登录获取 JWT
curl -X POST http://localhost:3000/api/auth/login -d '{"username":"testuser", "password":"testpassword"}' -H "Content-Type: application/json"
-
访问受保护的路由
curl -H "Authorization: Bearer <JWT>" http://localhost:3000/api/user/1
将 <JWT>
替换为从登录端点获取的令牌。
结论
此示例提供了一个使用 JWT 认证的 Go Fiber 应用的基本设置。它可以进一步扩展和定制,以满足更复杂应用的需求。