工作以及我使用passport-jwt
一些航線驗證和我與node-jwt-simple
/jwt-simple
創建我jwt
秒,但面臨着一些困難,因爲它看起來像我passport-jwt
身份驗證中間件根本不被稱爲。護照,智威湯遜身份驗證不使用節點智威湯遜 - 簡單
這裏是我的
護照JWT戰略
const jwtOpts = {
jwtFromRequest: ExtractJwt.fromHeader('Authorization'),
secretOrKey: secret,
};
passport.use(new jwtStrategy(jwtOpts, (payload, done) => {
console.log('payload ', payload.sub);
User.findById(payload.sub, (err, user) => {
if(err) { return done(err); }
if(!user) { console.log('didnt find!'); return done(null, false); }
done(null, user);
});
}));
我敢那麼它集成在這裏。
routes文件
router.get('/success',
passport.authenticate('jwt', {session: false}),
async (ctx, next) => ctx.body = await "success!");
這裏也是我讓我的jwt
的方式。
function tokenForUser(user) {
const timeStamp = new Date().getTime;
return jwt.encode({sub: user._id, iat: timeStamp}, secret);
}
//- Later in signup process
userToSave.save(async(err, user) => {
if(err) { return next(err); }
const token = await tokenForUser(user);
next(token);
});
//- If this helps, here is how my secret file looks like.
const secret = "JKAha23ja1ddHdjjf31";
export default secret;
問題來了,當我打的路線我只得到Unauthorized
並在控制檯中沒有獲取註銷甚至不是「有效載荷」我指定的第一個關鍵。
我也應該說,我有ctx.request.get('Authorization')
(基於Koa)的令牌,我認爲這是類似req.header('Authorization')
與所有路線中的快遞。
而且確切的快遞基於問題可以對node-jwt-simple
here GitHub的問題找到櫃面有我的代碼樣本的任何問題。
謝謝。