Я пытаюсь использовать Auth0 с Martini в Go. Я использую их examples, но я не могу заставить его работать независимо от того, что я пробую.Auth0 in Go Martini
Вот мой код:
package main
import (
"flag"
"github.com/go-martini/martini"
"github.com/martini-contrib/render"
"github.com/auth0/go-jwt-middleware"
"encoding/base64"
"github.com/dgrijalva/jwt-go"
"net/http"
)
func main() {
m := martini.Classic()
port := flag.String("port", "8000", "HTTP Port")
flag.Parse()
jwtMiddleware := jwtmiddleware.New(jwtmiddleware.Options{
ValidationKeyGetter: func(token *jwt.Token) (interface{}, error) {
decoded, err := base64.URLEncoding.DecodeString("<token>")
if err != nil {
return nil, err
}
return decoded, nil
},
})
m.Use(render.Renderer(render.Options{
IndentJSON: true, // Output human readable JSON
}))
m.Get("/", jwtMiddleware.Handler, func(res http.ResponseWriter, req *http.Request) { // res and req are injected by Martini
res.WriteHeader(200) // HTTP 200
})
// Get the PORT from the environment.
m.RunOnAddr(":" + *port)
}
Когда я бегу, что я получаю панику, которая говорит Value not found for type http.Handler
Если я изменю jwtMiddleware.Handler
к jwtMiddleware.HandlerWithNext
, я получаю панику на Value not found for type http.HandlerFunc
.
Есть ли у кого-нибудь идеи, что я делаю неправильно?
Работает как очарование. Кроме того, я сделал двойной прием, задаваясь вопросом, не пропустил ли я пример мартини, но потом заметил, что вы только что добавили его. Благодаря!! –
hahaha yep :). Добавил его для вас;). – mgonto
Это больше не работает, поскольку вызов «SecuredPingHandler» никогда не был выполнен. Я даже использовал 'os.Exit' вместо' SecuredPingHandler' только для того, чтобы узнать, доходит ли код до этого, и он никогда не делает. Я просто получаю '[martini] Completed 200 OK', и приложение продолжает работать –