我想通過在我試圖發送到去服務器請求一個額外的參數傳遞的查詢參數轉到HTTP請求處理程序如下所示 -使用MUX包
func main() {
err := config.Parse()
if err != nil {
glog.Error(err)
os.Exit(1)
return
}
flag.Parse()
defer glog.Flush()
router := mux.NewRouter()
http.Handle("/", httpInterceptor(router))
router.Handle("/v1/x", common.ErrorHandler(stats.GetS)).Methods("GET")
router.Handle("/v1/x/y", common.ErrorHandler(stats.GetS)).Methods("GET")
var listen = fmt.Sprintf("%s:%d", config.Config.Ip, config.Config.Port)
err = http.ListenAndServe(listen, nil)
if err != nil {
glog.Error(err)
os.Exit(1)
}
}
func httpInterceptor(router http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
startTime := time.Now()
if !auth.Auth(w, req) {
http.Error(w, "Failed authentication", 401)
return
}
router.ServeHTTP(w, req)
finishTime := time.Now()
elapsedTime := finishTime.Sub(startTime)
switch req.Method {
case "GET":
case "POST":
}
})
}
我該如何查看和解析Go服務器中的令牌以便驗證成功?
庫函數
func ParseFromRequest(req *http.Request, keyFunc Keyfunc) (token *Token, err error) {
// Look for an Authorization header
if ah := req.Header.Get("Authorization"); ah != "" {
// Should be a bearer token
if len(ah) > 6 && strings.ToUpper(ah[0:6]) == "BEARER" {
return Parse(ah[7:], keyFunc)
}
}
// Look for "access_token" parameter
req.ParseMultipartForm(10e6)
if tokStr := req.Form.Get("access_token"); tokStr != "" {
return Parse(tokStr, keyFunc)
}
return nil, ErrNoTokenInRequest
}
怎麼樣,我使用這樣的事情 - 令牌:= req.URL.Query()獲取( 「令牌」) – psbits 2015-01-26 22:06:06
酷。 ,謝謝,我如何將這個令牌參數傳遞給上面代碼中使用的Auth函數? 另一個問題是,我正在使用的外部庫查找「access_token」參數,並在我的服務器代碼中,我將添加此邏輯來處理「令牌」參數。我如何在內部將「token」映射到「Access_token」,以便庫可以成功驗證在請求中傳遞的此令牌? – psbits 2015-01-26 22:16:29
庫如何獲取查詢參數?它使用req.Form嗎? – 2015-01-26 22:31:28