2016-09-05 15 views
2

私はいつもその人が私のために無許可で戻ってくる問題を抱えています。受信したトークンにAuthorizationヘッダーを設定したとき。それは戻って戻ってくる。パスポートJWT - 無許可

無断

router.get('/dashboard', passport.authenticate('jwt', {session: false}), (req, res) => { 

    res.json('It worked: User ID is: ' + req.user._id); 

}); 

var jwtOptions = { 

    jwtFromRequest: ExtractJwt.fromAuthHeader(), 
    secretOrKey: config.jwt.secretOrKey 
    //issuer: config.jwt.issuer, 
    //audience: config.jwt.audience, 
}; 

passport.use(new JWTStrategy(jwtOptions, (jwt_payload, done) => { 

    User.findOne({id: jwt_payload.id}, (err, user) => { 

     if (err) { 
      return done(err, false); 
     } 

     if (!user) { 
      return done(null, false); 
     } 

     return done(null, user); 

    }); 

})); 

答えて

0

ただ、1つの変更が必要で、私は同じ問題を経験していた代わりにjwt_payload.id

1

のjwt_payload._doc.id使用!以下のコードは私のために働いた。この形式でAJAX呼び出しで「beforeSend」を使用し、ヘッダーにトークンを付加しながら、

module.exports = function(passport) { 
    passport.use(new JwtStrategy(opts, function(jwt_payload, done) { 
     User.findById(jwt_payload._id, function(err, user) { 
      if (err) { 
       return done(err, false); 
      } 
      if (user) { 
       done(null, user); 
      } else { 
       done(null, false); 
      } 
     }); 
    })); 
}; 

問題もUser.findOne({id: jwt_payload.id}, ...

である:

$.ajax({ 
     url: url, 
     type: 'POST', 
     data: data, 
     beforeSend: function(xhr) { 
      xhr.setRequestHeader('Authorization', window.localStorage.getItem('token')); 
     }, 
     success: function(data) { 
      console.log(data); 
     }, 
     error: console.log("Error"); 
}); 
2

あなたはおそらくAを行っている必要がありますリクエストヘッダーの誤り。 jwtFromRequestにExtractJwt.fromAuthHeader()、:

1)あなたは jwtFromRequestを変更する必要があります。READMEあたりとして 、それはあなたがこれらの事を変更する必要が

6

'認可の' = 'ベアラtoken_received_on_login' でなければなりません。

をjwt_payload._doc._idに変化jwt_payload._id)ベアラ{トークン}

3: 許可:ExtractJwt.fromAuthHeaderAsBearerToken()、

2)ヘッダーを設定

+0

これは私にとってはうまくいきました。ただし、3番目のステップはトークンに署名したものでなければなりませんでした(私の場合はユーザー名でした) –

関連する問題