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 关注
- 198 浏览
添加回答
举报