我正在使用auth0
和golang
来提供与here所示类似的休息服务。
我想知道如何找出当前触发某个API调用的用户名 - 例如,如果有人请求http://localhost:3000/products
- 在这种情况下,go处理程序如下所示:
var ProductsHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
payload, _ := json.Marshal(products)
w.Header().Set("Content-Type", "application/json")
w.Write([]byte(payload))
})
请求r
是否包含有关当前用户的更多信息?
或者我是否需要在中间件身份验证中找出当前用户:
func authMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
secret := []byte("{YOUR-AUTH0-API-SECRET}")
secretProvider := auth0.NewKeyProvider(secret)
audience := "{YOUR-AUTH0-API-AUDIENCE}"
configuration := auth0.NewConfiguration(secretProvider, audience, "https://{YOUR-AUTH0-DOMAIN}.auth0.com/", jose.HS256)
validator := auth0.NewValidator(configuration)
token, err := validator.ValidateRequest(r)
if err != nil {
fmt.Println(err)
fmt.Println("Token is not valid:", token)
w.WriteHeader(http.StatusUnauthorized)
w.Write([]byte("Unauthorized"))
} else {
next.ServeHTTP(w, r)
}
})
}
token
是否包含有关用户的更多信息?
我有点迷失在这里。 auth0
完美地确保只有注册人员可以使用REST-API,但我想提供用户特定信息。因此,它取决于当前用户REST回拨的内容。最初,我认为auth0会处理这个问题。有没有一种简单的方法来实现这一目标?
答案 0 :(得分:1)
是的,您需要使用token
来获取有关请求问题的信息。
要对您想要的所有内容进行排序,您需要查看下一个:
Claims
:Claims structure 索赔有一个字段
Issuer string `json:"iss,omitempty"`
你感兴趣的。