在使用 Auth0 的 golang 服务器中找出当前用户名

Find out current user name in golang server that uses Auth0

我正在使用 auth0golang 进行与 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 会处理这个问题。有没有一种简单的方法可以实现这一目标?

是的,您需要使用 token 来获取有关请求问题的信息。

要对您想要的所有内容进行排序,您需要查看下一个:

声明有一个字段

Issuer string `json:"iss,omitempty"`

你有兴趣。