【问题标题】:Node js handle Authorisation errors节点 js 处理授权错误
【发布时间】:2022-12-10 00:05:35
【问题描述】:

我有一个项目,我正在使用 Node js 作为后端。 我在捕获与授权 401 相关的错误时遇到问题。 如果出现类型授权错误,我想返回一个带有消息的对象并将其用作中间件,但它不起作用。

我仍然收到 Html 错误而不是对象。

授权处理程序:

function handler(err, req, res, next) {
    if (err.name === 'UnauthorizedError') {
        // jwt authentication error
        return res.status(401).json({success: false, message: "The user is not authorized"})
    }
    next();
}

module.exports = handler; 

App.js:调用中间件:

const handler=require('./helpers/error-handler');
 
app.use(handler);

数据库处理程序:处理与数据库相关的错误

"use strict";

/**
 * Get unique error field name
 */
const uniqueMessage = error => {
    let output;
    try {
        let fieldName = error.message.substring(
            error.message.lastIndexOf(".$") + 2,
            error.message.lastIndexOf("_1")
        );
        output =
            fieldName.charAt(0).toUpperCase() +
            fieldName.slice(1) +
            " already exists";
    } catch (ex) {
        output = "Unique field already exists";
    }

    return output;
};

/**
 * Get the erroror message from error object
 */
exports.errorHandler = error => {
    console.log('=================================================================')
    console.log(error);
    console.log('=================================================================')

    let message = "";
    // if (error.name==="UnauthorizedError"){
    //     message=error.name + ": " + error.message;
    // }
    if (error.code) {
        switch (error.code) {
            case 401:
                message="User not authorized";
                break;
            case 11000:
            case 11001:
                message = uniqueMessage(error);
                break;
            default:
                message = "Something went wrong";
        }
    } else {
        for (let errorName in error.errorors) {
            if (error.errorors[errorName].message)
                message = error.errorors[errorName].message;
        }
    }

    return message;
};

【问题讨论】:

    标签: node.js mongodb exception


    【解决方案1】:

    为什么要使用 switch 语句和 for 循环,更好的想法是创建一个继承自错误对象的类!

    【讨论】:

      猜你喜欢
      • 2015-04-09
      • 2016-06-12
      • 2021-11-15
      • 2018-07-26
      • 2018-01-31
      • 2018-09-05
      • 2018-05-04
      • 1970-01-01
      • 2018-09-11
      相关资源
      最近更新 更多