Node.js 如何添加JWT令牌身份验证以保护路由

Node.js 如何添加JWT令牌身份验证以保护路由,node.js,express,npm,jwt,Node.js,Express,Npm,Jwt,我已经添加了所需的代码,但仍然得到: 无法获取/api/login 我正在邮递员身上测试,也直接在浏览器上测试。但是,我还没有完全实现JWT身份验证。但其他api端点,如api/articles,api/update,api/delete等,工作正常。这是我的密码 server.js const express = require('express'); const bodyParser = require('body-parser'); const port = (process.env.P

我已经添加了所需的代码,但仍然得到:

无法获取/api/login

我正在邮递员身上测试,也直接在浏览器上测试。但是,我还没有完全实现JWT身份验证。但其他api端点,如
api/articles
api/update
api/delete
等,工作正常。这是我的密码

server.js

const express = require('express');
const bodyParser = require('body-parser');

const port = (process.env.PORT || 3000);
const app = express();

const api = require('./routes/api');
const cors = require('cors');

app.use(bodyParser.json());
app.use(cors());

app.use('/api', api);
app.get('/', function(req, res) {
    res.send('Server is up and running!');
})

app.listen((3000), function() {
    console.log('Server listening on PORT ' + port)
});
...
const jwt = require('jsonwebtoken');

router.post('/login', (req, res) => {
    const user = {
        id: 1,
        username: 'tanzeel',
        email: 'tanzeel@fakemail.com',
        password: 'fakepassword' 
    }

    jwt.sign({ user }, 'secretKey', (err, token) => {
        res.json({
            token
        })
    })
})
api.js

const express = require('express');
const bodyParser = require('body-parser');

const port = (process.env.PORT || 3000);
const app = express();

const api = require('./routes/api');
const cors = require('cors');

app.use(bodyParser.json());
app.use(cors());

app.use('/api', api);
app.get('/', function(req, res) {
    res.send('Server is up and running!');
})

app.listen((3000), function() {
    console.log('Server listening on PORT ' + port)
});
...
const jwt = require('jsonwebtoken');

router.post('/login', (req, res) => {
    const user = {
        id: 1,
        username: 'tanzeel',
        email: 'tanzeel@fakemail.com',
        password: 'fakepassword' 
    }

    jwt.sign({ user }, 'secretKey', (err, token) => {
        res.json({
            token
        })
    })
})
package.json

...
"dependencies": {
    "body-parser": "^1.19.0",
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "jsonwebtoken": "^8.5.1",
    "mongoose": "^5.6.13",
    "serve": "^11.3.2"
}
我也有其他的路由,但我在这里不提,因为它们工作得很好,并返回正确的json响应


请指出我的错误。

您的登录api应该处理POST请求(正如您使用router.POST('/login',)定义的路由)。由于您正在从邮递员/浏览器发出GET请求,因此您的请求与您定义的任何路由都不匹配


在发出请求以从服务器获取响应时,将邮递员中的请求类型更改为POST。

为什么要向“POST”路由发出get请求?