【发布时间】:2018-09-28 04:41:30
【问题描述】:
如何向我的静态资源添加基本身份验证?使用下面的代码,我可以查看标签文件夹中的任何文件。我知道在this 问题中解释了如何做到这一点。但是如果不使用http.ResponseWriter,我将如何设置标题?
package main
import (
"github.com/gorilla/mux"
"log"
"net/http"
"os"
)
func main() {
port := GetPort()
log.Println("[-] Listening on...", port)
r := mux.NewRouter()
r.PathPrefix("/labels/").Handler(http.StripPrefix("/labels/", http.FileServer(http.Dir("./labels/"))))
err := http.ListenAndServe(port, r)
log.Fatal(err)
}
// GetPort is for herkou deployment
func GetPort() string {
port := os.Getenv("PORT")
if port == "" {
port = "4747"
log.Println("[-] No PORT environment variable detected. Setting to ", port)
}
return ":" + port
}
【问题讨论】:
-
用身份验证中间件包装您的处理程序,以允许您的每个请求都通过身份验证中间件。
-
为什么不从处理程序中提供 pdf 文件,用户可以在其中点击端点获取 pdf 文件,然后您可以在验证后使用 http 下载文件。您当前的方法不好,因为您正在提供所有静态文件并希望对其进行验证。所以最好只对可以使用页面上的链接下载的 pdf 文件进行验证。
-
@Himanshu 这听起来是个好主意。抱歉,我是新手,所以我不知道该怎么做。
-
按照我在回答中提供的流程就可以了。正常提供 html、css、js 等静态文件,然后提供一个 URL,您应该像我一样在该 URL 上创建一个处理程序,然后在下载文件之前为用户添加身份验证以通过。让我编辑我的答案。
标签: http authentication go basic-authentication gorilla