0
我有一個擁有用戶和產品的應用程序。只有產品所有者才能查看產品。Laravel只允許所有者用戶訪問路線
如果用戶猜測產品ID,他們可能會查看產品。例如
http://booker.app/admin/products/32
繼該鏈接將允許用戶登錄任何可查看產品的ID爲32
這是有問題的路線:
Route::middleware(['middleware' => 'auth'])->prefix('admin')->group(function(){
Route::resource('products', 'ProductController');
});
我的產品控制器顯示方法:
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'));
}
forbidden和makeResponse函數只是檢查是否需要est是一個ajax請求,如果是的話返回json。
正如你所看到的,我正在使用路由模型綁定,並且正在檢查授權用戶是否與產品user_id相同。基本上有更好的方法來檢查用戶是否是產品的擁有者。
使用[policies](https://laravel.com/docs/5.4/authorization#writing-policies)是做到這一點的最「方法」。 – milo526