Ich habe eine Anwendung, die Benutzer und Produkte hat. Nur die Produktbesitzer sollten in der Lage sein, das Produkt zu sehen.Laravel nur Eigner Benutzer Zugriff auf Route
Wenn ein Benutzer eine Produkt-ID rät, kann er das Produkt möglicherweise anzeigen. Zum Beispiel
http://booker.app/admin/products/32
diesen Link Nach jedem angemeldeten Benutzer erlauben würde, das Produkt mit der ID 32.
Dies ist die betreffende Strecke anzuzeigen:
Route::middleware(['middleware' => 'auth'])->prefix('admin')->group(function(){
Route::resource('products', 'ProductController');
});
Meine Produkte Controller Show-Methode:
public function show(Product $product)
{
if($product->user_id !== Auth::user()->id){
return $this->forbidden('admin/products');
}
return $this->makeResponse('admin.products.product', compact('product'));
}
Die verbotenen und makeResponse Funktionen einfach überprüfen, ob die requ est war eine Ajax-Anfrage und wenn ja, json.
Wie Sie sehen können, verwende ich Route-Modell-Bindung und ich überprüfe, ob der autorisierte Benutzer das gleiche wie Produkt User_id ist. Grundsätzlich gibt es eine bessere Möglichkeit zu überprüfen, ob der Benutzer der Besitzer des Produkts ist.
Verwenden von [Richtlinien] (https://laravel.com/docs/5.4/authorization#writing-policies) ist die "Laravel" -Methode, dies zu tun. – milo526