2017-08-17 19 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.") 
} 

は私が何かを書き出すdoesntのパスポート、JWTのパスポートを取得するものをプリントアウトするための戦略

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に置く()が、コンソールを設定する方法です。指定されたトークンのペイロードがユーザーデータベースの既存のキーであるにもかかわらず、ルートはUnauthorized(Postman)を返すだけです。 私の質問は何ですか?

+0

パスポートを初期化しましたか? – gilamran

+0

私のサンプルを更新しました。はいいいえ –

+0

デコレーションなしでテストしましたか?ただ簡単な表現。 – gilamran

答えて

0

問題がjwt.ExtractJwt.fromAuthHeader()だったため、何らかの理由でAuthorizationヘッダーが認識されませんでしたので、代わりにjwt.ExtractJwt.fromHeader("authorization")が動作します。

関連する問題