Handling requests with Go
Go Middleware
The Clerk Go SDK provides a simple middleware that adds the active session to the request’s context.
.env1package main23import (4"net/http"5"github.com/clerkinc/clerk-sdk-go/clerk"6)78func main() {9client, _ := clerk.NewClient(your_secret_key)1011mux := http.NewServeMux()1213injectActiveSession := clerk.WithSession(client)14mux.Handle("/hello", injectActiveSession(helloUserHandler(client)))1516http.ListenAndServe(":8080", mux)17}1819func helloUserHandler(client clerk.Client) http.HandlerFunc {20return func(w http.ResponseWriter, r *http.Request) {21ctx := r.Context()2223sessClaims, ok := ctx.Value(clerk.ActiveSessionClaims).(*clerk.SessionClaims)24if !ok {25w.WriteHeader(http.StatusUnauthorized)26w.Write([]byte("Unauthorized"))27return28}2930user, err := client.Users().Read(sessClaims.Subject)31if err != nil {32panic(err)33}3435w.Write([]byte("Welcome " + *user.FirstName))36}37}