web-dev-qa-db-de.com

Laravel 6 Pass gibt 400 fehlerhafte Anfrage bei falschem Berechtigungsnachweis zurück

Ich verwende Laravel 6 Passport Passwort erteilen für mein Vue Backend.

Wenn ich den richtigen Berechtigungsnachweis an oauth/token sende, funktioniert dies und gibt das Token zurück, aber wenn ich einen falschen (E-Mail/Passwort) sende, wird mit dieser Nachricht 400 statt 401 zurückgegeben.

    {
    "error": "invalid_grant",
    "error_description": "The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.",
    "hint": "",
    "message": "The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client."
}

Ich habe client_id und client_secret überprüft.

Ich habe mit neu installiertem Laravel + Pass ohne einzelne Codezeile getestet, Laravel 5.8 gibt 401 ohne Probleme zurück, aber Laravel 6 gibt 400 fehlerhafte Anfragen zurück.

Hast du irgendeine Idee?

7
Mojtaba Sayari

Ich musste Folgendes in laravel 7.x) verwenden, um den 400-Level-Fehler in 401 in app/Exceptions/Handler.php Zu konvertieren.

NB : Überprüfen Sie den Typ OAuthServerException::class

/**
 * Render an exception into an HTTP response.
 *
 * @param \Illuminate\Http\Request $request
 * @param \Exception $exception
 * @return \Illuminate\Http\Response
 */
public function render($request, Throwable $exception)
{
    if (get_class($exception) === \Laravel\Passport\Exceptions\OAuthServerException::class) {
        return response(['message' => $exception->getMessage()], 401);
    }

    return parent::render($request, $exception);
}
0
Shobi

Sie können den Fehlerhandler unter App\Exceptions\Handler hinzufügen

use League\OAuth2\Server\Exception\OAuthServerException;
class Handler extends ExceptionHandler
{
    public function render($request, Exception $exception)
    {
        if (get_class($exception) === OAuthServerException::class) {
            response()->json(['message' => $exception->getMessage()], 401);
        }
    }
}
0
Natan Augusto