2017-08-17 1 views
0

Ich versuche derzeit, Pass-JWT zu implementieren, und ich habe eine Methode, die meine Token mit dem Schlüssel des Benutzers mit JWT-einfach erstellt.Wie Token Payload mit Pass-JWT korrekt prüfen?

Ich manuell in den Briefträger das Token und versuchen, diese Route zu bekommen. Ich benutze pleerock/routing-controllers @UseBefore ruft Middleware, bevor es die Methode bekommt.

@Get("/test") 
@UseBefore(passport.authenticate("jwt", { session: false })) 
test(@Res() response: Response){ 
    response.send("Test done.") 
} 

Hier ist, wie ich einrichten Pass-jwt Strategie

let OPTJWT = { 
    secretOrKey: 'Banana', 
    jwtFromRequest: jwt.ExtractJwt.fromAuthHeader() 
} 
passport.use(new jwt.Strategy(OPTJWT, async (jwt_payload, done) => { 
     console.log(jwt_payload) 
     let user = await mongoose.model("users").findOne({'key': jwt_payload.key}); 
     console.log(user) 
     if (user) { 
      return done(null, { 
       key: jwt_payload.key 
      }); 
     } else { 
      console.log("User not found") 
      return done(new Error("User not found"), null); 
     } 
    } 
    )); 


app.use(passport.initialize()) 

ich in console.log put() zu drucken, was der Pass bekommt aber Konsole tut etwas zu schreiben. Die Route gibt nur Unauthorized (Postman) zurück, obwohl ich sicher bin, dass die angegebene Token-Nutzlast ein vorhandener Schlüssel in der Benutzerdatenbank ist. Also meine Frage ist, was mache ich falsch?

+0

Haben Sie den Reisepass initialisiert? – gilamran

+0

Ich habe meine Probe aktualisiert, ja, ich tue –

+0

Haben Sie es ohne irgendwelche Dekorationen getestet? einfach einfach ausdrücken. – gilamran

Antwort

0

das Problem war jwt.ExtractJwt.fromAuthHeader(), aus irgendeinem Grund erkannte es Autorisierung Header nicht, sondern stattdessen diese jwt.ExtractJwt.fromHeader("authorization") funktioniert.

Verwandte Themen