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)。 所以我的問題是我做錯了什麼?
你是否初始化護照? – gilamran
我更新了我的示例,是的,我做了 –
您是否測試過它沒有任何裝飾?只是簡單的表達。 – gilamran