跳到主要内容
版本:2.9.x(Latest)

HTTP 服务器基本认证

Github Source: https://github.com/gogf/examples/tree/main/httpserver/basic-auth

介绍

本示例展示了如何使用 GoFrame 框架实现 HTTP 基本认证(Basic Authentication)。基本认证是一种简单的认证机制,允许服务器在授予对受保护资源的访问权限之前请求客户端提供凭据。

示例展示了如何:

  • 设置带有受保护资源的基本 HTTP 服务器
  • 使用 GoFrame 内置的 BasicAuth 方法实现基本认证
  • 处理认证成功和失败的情况
  • 自定义认证领域(realm)消息

环境要求

目录结构

basic-auth/
├── README.MD # 英文文档
├── README.ZH.MD # 中文文档
├── go.mod # Go 模块文件
└── main.go # 主程序入口

功能特点

  • 简单且安全的 HTTP 基本认证
  • 自动处理认证头部
  • 可自定义认证领域消息
  • 清晰分离认证逻辑

安装设置

  1. 克隆仓库:

    git clone https://github.com/gogf/examples.git
    cd examples/httpserver/basic-auth
  2. 安装依赖:

    go mod tidy
  3. 运行应用:

    go run main.go

使用方法

  1. 启动服务器:

    go run main.go
  2. 服务器将在 8000 端口启动。

  3. 访问受保护的资源:

  4. 认证成功后,您将看到消息:"Authentication successful!"

实现细节

服务器使用 GoFrameBasicAuth 方法实现 HTTP 基本认证。该方法:

  1. 检查请求是否包含有效的基本认证凭据
  2. 如果凭据缺失或无效,它会自动:
    • 设置带有指定领域的 WWW-Authenticate 头部
    • 返回 401 未授权状态码
    • 使浏览器显示认证对话框
  3. 如果认证成功,它返回 true 并允许处理程序继续处理受保护的内容

实现非常简洁,只需要很少的代码:

if r.BasicAuth("user", "pass", "Please enter username and password") {
// 认证成功后的处理
r.Response.Write("Authentication successful!")
}
// 如果认证失败,BasicAuth 方法会自动处理响应

注意事项

  • 基本认证以 base64 编码传输凭据,在纯 HTTP 上不安全
  • 在生产环境中,始终将基本认证与 HTTPS 结合使用
  • 本示例中的凭据是硬编码的,仅用于演示目的;在实际应用中,应使用安全的凭据存储