處理政策/授權異常這是我PostCategoriesController
類的一部分:Laravel 5.5,不能在構造函數
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\PostCategory;
use Illuminate\Support\Facades\Auth;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Auth\Access\AccessDeniedHttpException;
class PostCategoriesController extends Controller
{
public function __construct()
{
try {
echo 'The try works.';
$this->authorizeResource(PostCategoriesController::class);
} catch (\Exception $err) {
// Never get here.
dd('The catch does not. We never see this...');
}
}
public function create()
{
// This works... but then I have to repeat it for every action...
try {
$this->authorize('create');
return view('admin.post-categories.create');
} catch (\Exception $err) {
//return redirect()->route('admin.welcome');
return 'You cannot create categories, sorry.';
}
}
}
問題特別是與方法authorizeResource()
,這引發異常:
Symfony \ Component \ HttpKernel \ Exception \ AccessDeniedHttpException此操作未經授權。
方法authorizeResource()
不是在文檔,但我看到它在一些其他職位推薦,如Laravel policy always false和Apply Policy to Resource Controller例如。這也是here。
的PostCategoryPolicy
類只返回從他的方法布爾值,喜歡的東西:
public function update(User $user, PostCategory $postCategory)
{
return $user->has_role === 1;
}
那麼,我爲什麼不能捕獲該異常?
感謝您的幫助。我現在無法對此進行測試,但是當我在發生此問題的項目中需要做其他工作時,我會記住這一點。 –