Go 语言搭建带HTTP Basic 认证的简易网盘
【摘要】 使用 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))
}
🚀 快速使用步骤
-
初始化并运行: 在终端创建一个文件夹,保存上述代码为
main.go,然后运行:
Bashgo run main.go -
访问网盘: 打开浏览器访问
http://localhost:8080,系统会弹出登录框:
-
用户名:
admin -
密码:
123456(可在代码中自行修改)
-
-
核心优势:
-
自带文件列表:
http.FileServer会自动渲染当前目录下的所有文件和子目录,支持点击下载、浏览。 -
安全授权:通过标准 HTTP Basic 认证,防止未授权用户直接访问敏感文件。
-
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)