Wie die Rückkehr 403 Antwort im JSON-format in Laravel 5.2?
Ich versuche zu entwickeln, die eine RESTful API mit Laravel 5.2. Ich bin gestolpert auf wie die Rückkehr der fehlgeschlagenen Autorisierung im JSON-format. Derzeit, es wirft den Fehler 403 Seite anstelle von JSON.
Controller: TenantController.php
class TenantController extends Controller
{
public function show($id)
{
$tenant = Tenant::find($id);
if($tenant == null) return response()->json(['error' => "Invalid tenant ID."],400);
$this->authorize('show',$tenant);
return $tenant;
}
}
Politik: TenantPolicy.php
class TenantPolicy
{
use HandlesAuthorization;
public function show(User $user, Tenant $tenant)
{
$users = $tenant->users();
return $tenant->users->contains($user->id);
}
}
Die Genehmigung ist derzeit gut funktioniert, aber es zeigt sich eine 403 forbidden-Seite anstatt json Fehler. Ist es möglich, Rückgabe als JSON für die 403? Und, ist es möglich, um es global für alle fehlgeschlagenen Berechtigungen (nicht nur in diesem controller)?
- Ich würde verwenden eine 3rd-party-Bibliothek wie dingo/api. Es behandelt das für Sie, sowie die Versionierung und Transformatoren. github.com/dingo/api
Du musst angemeldet sein, um einen Kommentar abzugeben.
Konnten wir dieses Problem beheben, indem ändern die Ausnahmen-handler gefunden in
App\Exceptions\Handler.php
indem es in derrender
Funktion.dd($e instaceof AuthorizationException)
false zurück.Ja, machen Sie eine einfache Methode vor, in Ihre Politik, die ausgeführt werden, bevor alle weiteren Berechtigungsprüfungen,
TenantPolicy.php
es werden ein paar Funktionen drin, wieupdate
undstore
und es werden verschiedene bedingte Anweisungen. Was soll ich in deryourconditiontrue
dann?Können Sie abfangen der Ausnahme