2 回答

TA貢獻1859條經驗 獲得超6個贊
您可以通過調用 BasicAuth()您的
req *http.Request object
喜歡:
user, pass, _ := req.BasicAuth()
然后將 user 和 pass 與您擁有的靜態值進行比較。
https://golang.org/pkg/net/http/#Request.BasicAuth
更新:
func handleHTTP(w http.ResponseWriter, req *http.Request) {
user, pass, _ := req.BasicAuth()
if user != "muuser" || pass != "mysecret" {
// you have to import "errors"
http.Error(w, errors.New("not authoized!!"), http. StatusUnauthorized)
return
}
fmt.Printf("Requested : %s\n", req.URL.Path)
u := &httpunix.Transport{
DialTimeout: 100 * time.Millisecond,
RequestTimeout: 1 * time.Second,
ResponseHeaderTimeout: 1 * time.Second,
}
u.RegisterLocation("docker-socket", "/var/run/docker.sock")
req.URL.Scheme = "http+unix"
req.URL.Host = "docker-socket"
resp, err := u.RoundTrip(req)
if err != nil {
http.Error(w, err.Error(), http.StatusServiceUnavailable)
return
}
defer resp.Body.Close()
copyHeader(w.Header(), resp.Header)
w.WriteHeader(resp.StatusCode)
io.Copy(w, resp.Body)
}

TA貢獻1794條經驗 獲得超7個贊
在這里,您可以從我的以下小項目中復制邏輯。
首先,您需要一個服務器來存儲用戶(我使用過 Redis)。
比您需要3個功能的用戶
登錄用戶
注冊用戶
刪除用戶
在登錄/注冊階段,您生成一個 cookie 散列用戶名/密碼并將 cookie 設置到 Redis 表中
比每次調用 API 時都要驗證。
隨意復制您需要的代碼。
如果某些事情不能很好理解,請打開一個問題。
- 2 回答
- 0 關注
- 223 瀏覽
添加回答
舉報