Ich verwende node.js und express.js mit dem express-jwt Modul, und ich habe einen einfachen HTTP-Server eingerichtet, um alles zu testen:Node.js - Express.js JWT gibt immer einen ungültigen Token-Fehler in der Browserantwort zurück
Dieseist der Knoten Code beteiligt:
app.set('port', process.env.PORT || 3000);
app.use(express.methodOverride());
app.use(allow_cross_domain);
app.use('/api', expressJwt({secret: '09qrjjwef923jnrge$5ndjwk'}));
app.use(express.json());
app.use(express.urlencoded());
app.use('/', express.static(__dirname + '/'));
app.use(function(err, req, res, next){
if (err.constructor.name === 'UnauthorizedError') {
res.send(401, 'Unauthorized');
}
});
app.get('login',function(req,res){
//...
jwt.sign(results.username+results.email, secret, { expiresInMinutes: 9000000000*9393939393393939393939 });
});
app.post('api/profile',function(req,res){
console.log(req.user); // this return undefined in console
res.send(req.user); // response is pending and dunno why it returns error in browser console
});
Also, wenn ich öffne die /login
URL ich protokolliert werden, und ich senden, um die Session-Token zu api/post
, die gibt diese Antwort Fehler in der Browser-Konsole:
{"error":{"message":"invalid signature","code":"invalid_token","status":401,"inner":{}}}
Ich verstehe nicht, warum das passiert, weil das Token im Front-End und das Token in JWT gleich sind. Was könnte der Grund für diesen Fehler sein?
Ein Beispiel für Header POST
ed auf die api/post
URL:
können Sie den Wert von "geheimen" zeigen anmeldet jwt.sign? Auch results.username + results.email ist ein JSON? jwt.sign nimmt ein Json-Objekt. – woloski
@woloski danke mann für die antwort mich, ich lege keinen wert auf geheim var in zeichen() da ich dachte mit der ** app.use ('/ api', expressJwt ({geheime: '09qrjjwef923jnrge $ 5ndjwk'})); ** war bereits eingestellt: P ich irre? – sbaaaang
@woloski der Benutzer ist nicht ein JSON tatsächlich ich muss es als JSON einstellen ja ich werde es versuchen! thankss – sbaaaang