auth 中间件 req.body.authorization 'split' 未定义

Posted

技术标签:

【中文标题】auth 中间件 req.body.authorization \'split\' 未定义【英文标题】:auth middleware req.body.authorization 'split' is undefinedauth 中间件 req.body.authorization 'split' 未定义 【发布时间】:2021-10-31 23:14:55 【问题描述】:

我正在尝试检查是否存在令牌,但未定义“拆分”。我还在学习 MERN,所以不知道有什么问题。

const auths = async (req,res,next) => 
    try 
        const token = req.headers.authorization.split(" ")[1];
        const isCustomAuth = token.length < 500;

        let decodedData;

        if(token && isCustomAuth)
            decodedData = jwt.verify(token, 'todo');

            req.userId = decodedData?.id;
        else 
            decodedData = jwt.decode(token);

            req.userId = decodedData?.sub;
        

        next();
        console.log('auth tapped!');
     catch (error) 
        console.log(error);
    

【问题讨论】:

【参考方案1】:

因为标题没有authorization。所以req.headers.authorizationundefined。您可以使用optional chaining 来解决这样的问题:

const token = req.headers.authorization?.split(" ")[1];

【讨论】:

是的,它成功了!但令牌返回未定义 是的。你没有在标题中传递Authorization,所以它没有价值

以上是关于auth 中间件 req.body.authorization 'split' 未定义的主要内容,如果未能解决你的问题,请参考以下文章

使用带有子域的“auth”中间件

Laravel 身份验证中间件“auth:api”

你如何使用中间件('auth:api')测试路由?

*Nuxt JS Auth* 为啥在模板部分使用 loginWith 成功登录后 auth.loggedIn 为真,但在中间件文件中为假?

nodejs(express)中的Auth0中间件给出错误:aggrinfo ENOTFOUND

将 Auth 中间件应用于所有 Laravel 路由