我正在 laravel 5 中编写一个中间件。我想从中间件中抛出一个带有代码 403 的禁止异常。我的中间件功能如下:
use Exception;
public function handle($request, Closure $next)
{
if (!Auth::check()) {
throw new Exception("Access denied", 403);
}
return $next($request);
}
我正在从 Controller 调用我的中间件,我收到代码为 500 但不是 403 的错误消息。我该如何解决这个问题?
最佳答案
您可以简单地使用 abort()
助手。 (或者 App::abort()
)
public function handle($request, Closure $next) {
if (!Auth::check()) {
abort(403, 'Access denied');
}
return $next($request);
}
您可以通过覆盖 render()
在 App\Exceptions\Handler
中处理这些异常 例如:
public function render($request, Exception $e)
{
if($e instanceof HttpException && $e->getStatusCode() == 403){
return new JsonResponse($e->getMessage(), 403);
}
return parent::render($request, $e);
}
关于php - 如何从 laravel5 中的中间件抛出禁止的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28805680/