package main import ( "github.com/emicklei/go-restful" "io" "log" "net/http" ) // This example shows how to create a (Route) Filter that performs Basic Authentication on the Http request. // // GET http://localhost:8080/secret // and use admin,admin for the credentials func main() { ws := new(restful.WebService) ws.Route(ws.GET("/secret").Filter(basicAuthenticate).To(secret)) restful.Add(ws) log.Fatal(http.ListenAndServe(":8080", nil)) } func basicAuthenticate(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) { // usr/pwd = admin/admin u, p, ok := req.Request.BasicAuth() if !ok || u != "admin" || p != "admin" { resp.AddHeader("WWW-Authenticate", "Basic realm=Protected Area") resp.WriteErrorString(401, "401: Not Authorized") return } chain.ProcessFilter(req, resp) } func secret(req *restful.Request, resp *restful.Response) { io.WriteString(resp, "42") }