Аутентификация API с JWT всегда дает WebTokenError - PullRequest
0 голосов
/ 04 ноября 2019

Я узнал о 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, (request, 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', (request, response) => {
    const user = {
        id: 1,
        user: 'sarath',
        email: 'sarathsekaran@gmail.com'
    }

    jwt.sign({user}, 'secretKey', (err, 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'));

1 Ответ

1 голос
/ 04 ноября 2019

При создании токена jwt вы должны использовать уникальный секретный ключ и хранить его в другом месте, а не непосредственно в коде. Вы сталкиваетесь с этой ошибкой, потому что ваш секретный ключ имеет строчную букву «k» в одном месте и прописную в другом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...