現在、私は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)を返すだけです。 私の質問は何ですか?
パスポートを初期化しましたか? – gilamran
私のサンプルを更新しました。はいいいえ –
デコレーションなしでテストしましたか?ただ簡単な表現。 – gilamran