Hi, I have this main function in a main.go file inside the main directory func main() { log.Printf("Server started")
router := sw.NewRouter() manager := manage.NewDefaultManager() manager.SetAuthorizeCodeTokenCfg(manage.DefaultAuthorizeCodeTokenCfg) manager.MustTokenStorage(store.NewMemoryTokenStore()) clientStore := store.NewClientStore() manager.MapClientStorage(clientStore) srv := server.NewDefaultServer(manager) srv.SetAllowGetAccessRequest(true) srv.SetClientInfoHandler(server.ClientFormHandler) manager.SetRefreshTokenCfg(manage.DefaultRefreshTokenCfg) srv.SetInternalErrorHandler(func(err error) (re *errors.Response) { log.Println("Internal Error:", err.Error()) return }) srv.SetResponseErrorHandler(func(re *errors.Response) { log.Println("Response Error:", re.Error.Error()) }) router.HandleFunc("/oauth2/token", func(w http.ResponseWriter, r *http.Request) { srv.HandleTokenRequest(w, r) }) router.HandleFunc("/credentials", func(w http.ResponseWriter, r *http.Request) { clientId := uuid.New().String()[:8] clientSecret := uuid.New().String()[:8] err := clientStore.Set(clientId, &models.Client{ ID: clientId, Secret: clientSecret, Domain: "http://localhost:9094", }) if err != nil { fmt.Println(err.Error()) } w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(map[string]string{"CLIENT_ID": clientId, "CLIENT_SECRET": clientSecret}) }) log.Fatal(http.ListenAndServe(":8000", router)) } The functions below are in different files in the sub directory of the main as *maindir *subdir //Funtion in handler.go in subdir func protecteduri(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hello, I'm protected")) } //This function in middleware.go in subdir func validateToken(f http.HandlerFunc, srv *server.Server) http.HandlerFunc { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { _, err := srv.ValidationBearerToken(r) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } f.ServeHTTP(w, r) }) } And my routes are in the router.go in the subdir as type Route struct { Name string Method string Pattern string HandlerFunc http.HandlerFunc } type Routes []Route func NewRouter() *mux.Router { router := mux.NewRouter().StrictSlash(true) for _, route := range routes { var handler http.Handler handler = route.HandlerFunc handler = Logger(handler, route.Name) router. Methods(route.Method). Path(route.Pattern). Name(route.Name). Handler(handler) } return router } func Index(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello World!") } var routes = Routes{ { "Index", "GET", "/", Index, }, { "protecteduri", strings.ToUpper("Get"), "/protected", protecteduri, }, } My question is how do i apply the "validateToken" function (middleware) to the routes in the router.go? The function is to validate the access token in the request message before calling the handler functions. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.