Tôi cố gắng để vượt qua một tham số bổ sung trong yêu cầu tôi đang cố gắng để gửi đến máy chủ Go -Đi qua một tham số truy vấn để xử lý yêu cầu Go HTTP bằng cách sử dụng MUX gói
websocket.create_connection("ws://<ip>:port/x/y?token="qwerty")
The Go máy chủ thực hiện là như sau -
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":
}
})
}
Tôi nên xem và phân tích cú pháp mã thông báo trong máy chủ Go để xác thực thành công như thế nào?
Thư viện chức năng
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
}
Làm thế nào về tôi sử dụng một cái gì đó như thế này - mã thông báo: = req.URL.Query() Nhận ("token") – psbits
mát. , cảm ơn, Làm cách nào để chuyển thông số mã thông báo này tới hàm Auth đang được sử dụng trong mã ở trên? Một câu hỏi khác là thư viện bên ngoài mà tôi đang sử dụng tìm kiếm thông số "access_token" và trong mã máy chủ của tôi, tôi sẽ thêm logic này để xử lý thông số "mã thông báo". Làm thế nào tôi có thể bản đồ nội bộ "mã thông báo" để "Access_token" để thư viện có thể xác thực thành công mã thông báo này được thông qua trong yêu cầu? – psbits
Thư viện nhận thông số truy vấn như thế nào? Nó có sử dụng req.Form không? –