Pass JWT - Unauthorized
Ich habe da ein problem, wo seine immer wiederkehrenden nicht für mich. Wenn ich die header-Autorisierung, um die token zu erhalten. Es gibt wieder mit.
Unbefugte
.
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);
});
}));
- Stellen Sie sicher, dass Sie die gleichen
SecretKey
sowohl für die Unterzeichnung des token und überprüfung der eingehenden token und auch sicher sein, dass Sie die token-Ablauf der Zeit, lange genug, so dass es nicht bald ablaufen, bevor Sie Ihre Prüfung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du diese Dinge ändern müssen:
1) Sie haben zu ändern
jwtFromRequest: ExtractJwt.fromAuthHeader(),
zujwtFromRequest :ExtractJwt.fromAuthHeaderAsBearerToken(),
2) Legen Sie die Kopfzeile:
Authorization:Bearer {token}
3)
jwt_payload._id
änderungjwt_payload._doc._id
Set the header: Authorization:Bearer {token}
für mich gearbeitet.console.log(jwt_payload)
. In einigen Fällen (Pass 0.4.0-und Pass-jwt 4.0.0) sollten Sie jwt_payload.Nutzlast._id.War ich mit dem gleichen problem! Den code unten für mich gearbeitet.
Liegt das problem mit
User.findOne({id: jwt_payload.id}, ...
Auch beim anbringen der token in den header verwenden Sie die 'beforeSend" in der AJAX-Aufruf in diesem format:
Du muss wohl einen Fehler gemacht haben, in der
request header
.Wie pro die README, sollte es
'Authorization' = 'bearer token_received_on_login'
Nur eine änderung erforderlich, verwenden Sie
jwt_payload._doc.id
stattjwt_payload.id
Den header von
res.json({token: 'JWT ' + token})
zures.json({token: 'Bearer ' + token})
jwt_payload.data._id
für mich gearbeitet