go - 访问基本身份验证凭据

标签 go basic-authentication go-alice

我正在使用 GoLang 开发 API。对此 API 的所有调用都将包含一个 public_key(用户名),有些还会在 Authorization header 中包含一个 private_key(密码)。

我正在尝试弄清楚如何访问 Auth header 详细信息,以便我可以根据数据库检查凭据。

我正在使用 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 函数。如果 public_key 存在,我需要检查它是否有效。 private_key 如果包含的话也是如此。

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

    }

    return http.HandlerFunc(fn)
}

最佳答案

尝试运行函数 BasicAuth根据要求:

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

关于go - 访问基本身份验证凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30327588/

相关文章:

c++ - 从C++ dll调用Go dll

node.js - 在 Heroku 上将 NodeJs 应用程序设为私有(private)

javascript - 使用 javascript 控制 HTTP 基本身份验证

java - 使用 Spring Security 3.1 通过表单登录和 http-basic 安全性来保护相同的 RESTful 资源

go - 如何将 Go 中间件模式与错误返回请求处理程序结合起来?

http - 如何让 Go 的 net/http 包停止删除双斜杠?

go - 如何使用 Gorilla Mux 在 GET 请求中进行可选查询?

go - 如何扫描十进制值?