我将 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 的方法,但我似乎无法让它工作。
最佳答案
要修改来自 Passport 的错误消息,一种方法是扩展 Passport 基类以及您尝试过的类似 OAuthException 方法。 Here's a reasonable explanation of how to do this.我试图为类似的东西做这件事,但在我的情况下发现它是矫枉过正的,并追求更简单的东西。
但是,如果问题是您如何在移动应用程序中显示错误,那么一种方法可能是将这些错误映射到更理想的位置,而不是直接使用它们向用户报告(以下是伪代码,因为我不确定)您的移动应用程序的编码内容):
function handleErrorResponse(response) {
var errorMap = {
"invalid_credentials": "Username or password was incorrect."
};
return errorMap[response.error];
}
通过这种方式,League\OAuth2\Server 是您的真实来源,您的应用程序在向用户报告时只需翻译这些基本消息。希望能帮助到你!
关于laravel - 如何在 Laravel 5.3 中修改来自 Passport OAuth 的错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41656116/