Go 访问基本身份验证凭据

Go 访问基本身份验证凭据,go,basic-authentication,go-alice,Go,Basic Authentication,Go Alice,我正在使用GoLang开发一个API。对该API的所有调用都将包含一个公钥(用户名),有些调用还将在授权标头中包含一个私钥(密码) 我正试图弄清楚如何访问Auth头的详细信息,以便根据数据库检查凭据 我正在使用Julien Schmidt的路由器和Alice来链接中间件。到目前为止,我的设置是: func main() { session, err := mgo.Dial("conn-string") if err != nil { panic(err)

我正在使用GoLang开发一个API。对该API的所有调用都将包含一个
公钥
(用户名),有些调用还将在授权标头中包含一个
私钥
(密码)

我正试图弄清楚如何访问Auth头的详细信息,以便根据数据库检查凭据

我正在使用Julien Schmidt的路由器和Alice来链接中间件。到目前为止,我的设置是:

func main() {
    session, err := mgo.Dial("conn-string")
    if err != nil {
        panic(err)
    }
    defer session.Close()
    session.SetMode(mgo.Monotonic, true)

    c := appContext{session.DB("db-name")}
    commonHandlers := alice.New(context.ClearHandler)
    router := NewRouter()
    router.Get("/", commonHandlers.Append(basicAuthHandler).ThenFunc(c.mainHandler))

    http.ListenAndServe(":5000", router)
}
但我不确定如何继续使用下面的
basicAuthHandler
函数。如果有
公钥
,我需要检查它是否有效。如果包含
私钥,则与此相同

func basicAuthHandler(next http.Handler) http.Handler {
    fn := func(w http.ResponseWriter, r *http.Request) {

    }

    return http.HandlerFunc(fn)
}
尝试对请求运行该函数:

user, password, ok := r.BasicAuth()
if !ok {
  // could not get basic authentication credentials
}

最好不要误用那些含义非常明确的术语。好的,
app\u id
secret