猿问

类型错误:无法读取属性'授权' 使用 express-jwt 的 undefined

我正在尝试为我正在使用的路由添加身份验证express-jwt我添加了这个中间件来保护创建后的路由。但是在测试时,我在邮递员中遇到了错误。


错误


TypeError: Cannot read property &#39;authorization&#39; of undefined<br> &nbsp; &nbsp;at Object.getTokenFromHeaders [as getToken]


这些是我的 express jwt 代码


认证.js


import  jwt from 'express-jwt';

const getTokenFromHeaders = (req) => {

    const { headers: { authorization } } = req;

    console.log(authorization);     <----- in this log i am getting token

    if(authorization && authorization.split(' ')[0] === 'Token') {

        return authorization.split(' ')[1];


    }

    return null;

};


const auth = {

    required: jwt({

        secret: 'secret',

        userProperty: 'payload',

        getToken: getTokenFromHeaders,

    }),

    optional: jwt({

        secret: 'secret',

        userProperty: 'payload',

        getToken: getTokenFromHeaders,

        credentialsRequired: false,

    }),

};


module.exports = auth;

路由.js


routes.post('/post', auth.required, postController.post);


千巷猫影
浏览 329回答 2
2回答

Helenr

你在这一行有一个错误:const&nbsp;{&nbsp;headers:&nbsp;{&nbsp;authorization&nbsp;}&nbsp;}&nbsp;=&nbsp;req.body;因为headersprop 是在reqobject 上,而不是 on&nbsp;req.body,所以它应该是这样的:const&nbsp;{&nbsp;headers:&nbsp;{&nbsp;authorization&nbsp;}&nbsp;}&nbsp;=&nbsp;req;

SMILET

使用const authorization = req.headers.authorization它应该可以解决问题
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答