如何传递身份验证令牌/标头?

时间:2021-05-29 11:05:22

标签: node.js express jwt

我设计了一种身份验证功能,在通过我的 POSTMAN 端点测试时可以完美运行。这是 Authorization 值正确时的样子:successful authorization

当我更改 Authorization 值以故意使授权过程失败时,它看起来像这样:

failed authorization

在下面找到授权码:

const jwt = require ('jsonwebtoken');
const authenticate = (req, res, next)=>{
    try {
        const token = req.headers.authorization.split(' ')[1]
        const decode = jwt.verify(token, 'verySecretValue')
        console.log('Authentication PASSED!');
        next();
        
    }
    catch (error) {
        
        res.json({
            message: 'Authentication FAILED!'       
        })
        
    }
}

module.exports = authenticate

而且,现在在下面找到我用来渲染的代码:

.
.
.
const authenticate = require('./authentication/authenticate.js');
.
.
.
.

app.get('/list', authenticate, async (req,res)=> {

    let countyResult = await county();
    let transId = await transactionId();
    
    transModel.find({transIndustry: 'Pharmacy'}, (err, docs)=> {
    if (!err) 
        {
            res.render('list',  {data : docs, countyName: countyResult, transId: transId}); 
        }
    else
        {
//          res.status(status).send(body);      
        }
            
    })
});

但是,当我尝试通过浏览器访问上面的端点/链接/地址时,我收到此错误消息:

{"message":"Authentication FAILED!"}

我觉得这是一个授权值问题,我不太清楚在通过 list 呈现 res.render('list', {data : docs, countyName: countyResult, transId: transId}); 页面时应该如何传递这个值。

期待您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以通过打开开发工具并转到网络选项卡来检查浏览器发出的请求。在那里,您可以检查是否传递了正确的标头。

前端是否有任何代码可以在标头中传递令牌?

如果这不是一个选项,您可以探索在 cookie 中设置令牌。这样,您就可以确保向后端发出的每个请求都会包含它。