Go 语言搭建带HTTP Basic 认证的简易网盘

举报
lukeme 发表于 2026/10/30 07:21:59 2026/10/30
【摘要】 使用 Go 语言搭建一个带HTTP Basic 认证(授权)的简易网盘服务器非常简单。借助 Go 标准库中的 net/http,只需十几行代码就能实现文件浏览、下载以及密码保护。以下是完整的最小实现代码:Gopackage mainimport ( "log" "net/http")func main() { // 设置网盘根目录("." 表示当前目录,可修改为绝对路径如 "/data/sh...
使用 Go 语言搭建一个带HTTP Basic 认证(授权)的简易网盘服务器非常简单。借助 Go 标准库中的 net/http,只需十几行代码就能实现文件浏览、下载以及密码保护。

以下是完整的最小实现代码:

Go
package main

import (
	"log"
	"net/http"
)

func main() {
	// 设置网盘根目录("." 表示当前目录,可修改为绝对路径如 "/data/share")
	dir := http.Dir(".")

	// 创建文件服务器处理器
	fileServer := http.FileServer(dir)

	// 包装一层带有账号密码校验的中间件
	authHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		// 从请求头获取输入的账号密码
		user, pass, ok := r.BasicAuth()

		// 在这里修改你的用户名和密码
		if !ok || user != "admin" || pass != "123456" {
			w.Header().Set("WWW-Authenticate", `Basic realm="Restricted Files"`)
			http.Error(w, "Unauthorized", http.StatusUnauthorized)
			return
		}

		// 验证通过,放行访问文件
		fileServer.ServeHTTP(w, r)
	})

	// 监听 8080 端口
	log.Println("Miniserver started at http://localhost:8080")
	log.Fatal(http.ListenAndServe(":8080", authHandler))
}

🚀 快速使用步骤

  1. 初始化并运行: 在终端创建一个文件夹,保存上述代码为 main.go,然后运行:

    Bash
    go run main.go
    
  2. 访问网盘: 打开浏览器访问 http://localhost:8080,系统会弹出登录框:

    • 用户名:admin

    • 密码:123456(可在代码中自行修改)

  3. 核心优势:

    • 自带文件列表:http.FileServer 会自动渲染当前目录下的所有文件和子目录,支持点击下载、浏览。

    • 安全授权:通过标准 HTTP Basic 认证,防止未授权用户直接访问敏感文件。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。