猿问

如何使用基本身份验证提供静态文件?

我无法http.FileServer使用github.com/abbot/go-http-auth.


package main


import (

    "fmt"

    "log"

    "net/http"


    "github.com/abbot/go-http-auth"

)


func Secret(user, realm string) string {

    users := map[string]string{

        "john": "$1$dlPL2MqE$oQmn16q49SqdmhenQuNgs1", //hello

    }


    if a, ok := users[user]; ok {

        return a

    }

    return ""

}


func doRoot(w http.ResponseWriter, r *http.Request) {

    fmt.Fprintf(w, "<h1>static file server</h1><p><a href='./static'>folder</p>")

}


func handleFileServer(w http.ResponseWriter, r *http.Request) {

    fs := http.FileServer(http.Dir("static"))

    http.StripPrefix("/static/", fs)

}


func main() {


    authenticator := auth.NewBasicAuthenticator("localhost", Secret)


    // how to secure the FileServer with basic authentication??

    // fs := http.FileServer(http.Dir("static"))

    // http.Handle("/static/", http.StripPrefix("/static/", fs))


    http.HandleFunc("/static/", auth.JustCheck(authenticator, handleFileServer))


    http.HandleFunc("/", auth.JustCheck(authenticator, doRoot))


    log.Println(`Listening... http://localhost:3000

 folder is ./static

 authentication in map users`)

    http.ListenAndServe(":3001", nil)

}

代码:


fs := http.FileServer(http.Dir("static"))

http.Handle("/static/", http.StripPrefix("/static/", fs))

工作在main() 不进行认证,但是伴随不能使用它auth.JustCheck。我尝试使用handleFileServer功能,但没有显示任何内容。有什么诀窍?


交互式爱情
浏览 184回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答