Как выкинуть запрещенное исключение из middleware в laravel5?

Я пишу промежуточное ПО на laravel5, хочу через запрещенное исключение с кодом 403 из промежуточного ПО. моя промежуточная функция приведена ниже.

use Exception;
public function handle($request, Closure $next) {
if (!Auth::check()) {
throw new Exception("Access denied", 403);
}
return $next($request);
}

Я звоню в промежуточное ПО с контроллера и получаю сообщение об ошибке с кодом 500, но не с 403. Как я могу решить эту проблему?

15

Решение

Вы можете просто использовать abort() помощник. (Или же App::abort())

public function handle($request, Closure $next) {
if (!Auth::check()) {
abort(403, 'Access denied');
}
return $next($request);
}

Вы можете обработать эти исключения внутри App\Exceptions\Handler переопределив render() Например:

public function render($request, Exception $e)
{
if($e instanceof HttpException && $e->getStatusCode() == 403){
return new JsonResponse($e->getMessage(), 403);
}
return parent::render($request, $e);
}
19

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]