5

我将 Laravel 5.3 用于移动应用程序连接到的 REST 服务器。我已经为大多数 Laravel 错误定制了异常处理程序,并且按照我喜欢的方式工作。

然而,OAuth 错误又变得丑陋了。例子:

{
    "error":"invalid_credentials",
    "message":"The user credentials were incorrect."
}

显然,我不是唯一一个对带有下划线的错误代码感到困扰的人——我只有少数 beta 测试人员,他们已经将此报告为“错误”。

Passport 似乎绕过了常规的错误处理程序,League\OAuth2\Server\Exception\OAuthServerException而是通过了。这些丑陋的错误消息被硬编码到该文件中。

public static function invalidCredentials()
{
    return new static('The user credentials were incorrect.', 6, 'invalid_credentials', 401);
}

我已经认真尝试了十几种扩展/覆盖 OAuthServerException 的方法,但我似乎无法让它发挥作用。

4

1 回答 1

0

要从 Passport 修改错误消息,一种方法是扩展 Passport 基类,并且与您尝试过的类似的 OAuthException 方法类似。这是如何做到这一点的合理解释。我试图为类似的事情做这件事,但在我的情况下发现它是矫枉过正的,而是去做一些更简单的事情。

但是,如果问题是您如何在移动应用程序中显示错误,一种方法可能是将这些错误映射到更理想的位置,而不是直接使用它们向您的用户报告(以下是伪代码,因为我不确定您的移动应用程序的编码内容):

function handleErrorResponse(response) {
    var errorMap = {
        "invalid_credentials": "Username or password was incorrect." 
    };

    return errorMap[response.error];
}

这样,League\OAuth2\Server 就是您的事实来源,您的应用程序在向用户报告时只需翻译这些基本消息。希望能帮助到你!

于 2017-10-10T13:36:04.693 回答