我一直在学习有关JWT的知识,我遇到的问题是响应以JsonWebTokenError形式给出。令牌生成工作正常。但是令牌的验证给我一个错误,指出“ JsonWebTokenError”和消息“无效签名”。这是我的代码
const express = require('express');
const jwt = require('jsonwebtoken');
const app = express();
app.get('/api',(request,response) => {
response.json({
message: 'This is an Authentication API'
})
})
app.post('/api/posts',verifyToken,response) => {
jwt.verify(request.token,'secretkey',(err,authData) => {
if(err){
response.json({err});
}
else{
response.json({
message: 'Post was created successfully',authData
})
}
})
})
app.post('/api/login',response) => {
const user = {
id: 1,user: 'sarath',email: 'sarathsekaran@gmail.com'
}
jwt.sign({user},'secretKey',token) => {
response.json({
token
});
});
});
//VerifyToken
//Authori FORMAT: Bearer <token>
function verifyToken(request,response,next){
//Get auth header value
const bearerHeader = request.headers['authorization'];
//Checking if bearer is undefined
if(typeof bearerHeader !== 'undefined'){
//Spilt the token from Bearer
const bearer = bearerHeader.split(' ');
const bearerToken = bearer[1];
//Set the token
request.token = bearerToken;
//Next Middleware
next();
}
else{
//Forbidden
response.sendStatus(403);
}
}
app.listen(5000,()=>console.log('Server Started'));