2017-08-17 82 views
0

我目前正試圖實現passport-jwt,並且我有一個方法可以用jwt-simple創建帶有用戶密鑰的令牌。如何使用passport-jwt正確檢查令牌載荷?

async createToken(u: string, p: string){ 
    let user = await this.us.model.findOne({'key': u}) 
    if (user.key == u){ 
     let payload = {'key': u} 
     let token = jwt.encode(payload, "Banana") 
     return token; 
    } 
} 

我手動將它放入郵遞員令牌並嘗試獲取此路由。我使用pleerock/routing-controllers @UseBefore在進入方法之前調用中間件。

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

這是我如何設置護照智威湯遜的戰略

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()) 

我放的console.log()打印出來的護照得到什麼,但控制檯犯規寫東西了。即使確定給定令牌有效負載是用戶數據庫中的現有密鑰,該路由也只會返回未授權(Postman)。 所以我的問題是我做錯了什麼?

+0

你是否初始化護照? – gilamran

+0

我更新了我的示例,是的,我做了 –

+0

您是否測試過它沒有任何裝飾?只是簡單的表達。 – gilamran

回答

0

問題是jwt.ExtractJwt.fromAuthHeader(),由於某種原因,它沒有認出授權標題,所以jwt.ExtractJwt.fromHeader("authorization")工作。

相關問題