2017-01-14 21 views
5

Tôi đang sử dụng Laravel 5.3 cho máy chủ REST mà ứng dụng di động kết nối. Tôi đã tùy biến trình xử lý ngoại lệ cho hầu hết các lỗi Laravel và nó hoạt động theo cách tôi muốn.Làm cách nào để sửa đổi thông báo lỗi từ Passport OAuth trong Laravel 5.3?

Tuy nhiên, lỗi OAuth trở lại xấu xí. Ví dụ:

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

Rõ ràng, tôi không phải là người duy nhất làm phiền bởi các mã lỗi với dấu gạch - Tôi chỉ có một số ít các thử nghiệm beta và họ đã báo cáo này như là một "lỗi".

Hộ chiếu dường như phá vỡ trình xử lý lỗi thông thường và thay vào đó, hãy chuyển qua League\OAuth2\Server\Exception\OAuthServerException. Các thông báo lỗi xấu này được mã hóa cứng vào tệp đó.

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

Tôi đã cố gắng nghiêm túc như một cách tiếp cận để mở rộng/ghi đè OAuthServerException, nhưng tôi dường như không thể làm cho nó hoạt động.

Trả lời

0

Để sửa đổi thông báo lỗi từ Hộ chiếu một cách sẽ là mở rộng các lớp cơ sở Hộ chiếu và tương tự như phương pháp OAuthException như bạn đã cố gắng. Here's a reasonable explanation of how to do this. Tôi đã cố gắng để làm điều này cho một cái gì đó tương tự nhưng trong trường hợp của tôi thấy nó là quá mức cần thiết và đi cho một cái gì đó đơn giản hơn. Tuy nhiên, nếu vấn đề là cách bạn hiển thị lỗi trong ứng dụng dành cho thiết bị di động, bạn có thể lập bản đồ các lỗi đó cho một điều gì đó hấp dẫn hơn là sử dụng chúng trực tiếp để báo cáo cho người dùng của bạn (sau đây là mã giả như tôi). không chắc chắn những gì ứng dụng di động của bạn được mã hóa trong):

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

    return errorMap[response.error]; 
} 

Bằng cách này giải \ OAuth2 \ server là nguồn của bạn của chân lý và ứng dụng của bạn chỉ đơn giản là chuyển những thông điệp cơ bản khi báo cáo cho người dùng. Hy vọng nó giúp!

Các vấn đề liên quan