Handling requests with Go
Go Middleware
The Clerk Go SDK provides an easy-to-use middleware that adds the active session to the request’s context.
.envpackage main import ( "net/http" "github.com/clerk/clerk-sdk-go/clerk" ) func main() { client, _ := clerk.NewClient({{secret}}) mux := http.NewServeMux() injectActiveSession := clerk.WithSession(client) mux.Handle("/hello", injectActiveSession(helloUserHandler(client))) http.ListenAndServe(":8080", mux) } func helloUserHandler(client clerk.Client) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { ctx := r.Context() sessClaims, ok := ctx.Value(clerk.ActiveSessionClaims).(*clerk.SessionClaims) if !ok { w.WriteHeader(http.StatusUnauthorized) w.Write([]byte("Unauthorized")) return } user, err := client.Users().Read(sessClaims.Subject) if err != nil { panic(err) } w.Write([]byte("Welcome " + *user.FirstName)) } }