处理政策/授权异常这是我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;
}
那么,我为什么不能捕获该异常?
感谢您的帮助。我现在无法对此进行测试,但是当我在发生此问题的项目中需要做其他工作时,我会记住这一点。 –