【问题标题】:How do I modify error messages from Passport OAuth in Laravel 5.3?如何在 Laravel 5.3 中修改来自 Passport OAuth 的错误消息?
【发布时间】:2017-05-30 02:16:39
【问题描述】:

我将 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 的方法,但我似乎无法让它发挥作用。

【问题讨论】:

    标签: laravel oauth laravel-5.3 laravel-passport


    【解决方案1】:

    要修改来自 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 是您的真实来源,您的应用在向用户报告时只需翻译这些基本消息。希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 2020-03-25
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      • 2017-03-18
      • 1970-01-01
      • 2017-02-28
      • 1970-01-01
      • 2018-11-08
      相关资源
      最近更新 更多