J'écris un middleware en laravel 5. Je veux lever une exception interdite avec le code 403 du middleware. Ma fonction middleware est donnée ci-dessous:
use Exception;
public function handle($request, Closure $next)
{
if (!Auth::check()) {
throw new Exception("Access denied", 403);
}
return $next($request);
}
J'appelle mon middleware depuis le contrôleur et j'obtiens un message d'erreur avec le code 500 mais pas 403. Comment puis-je résoudre ce problème?
Vous pouvez simplement utiliser l'assistant abort()
. (Ou App::abort()
)
public function handle($request, Closure $next) {
if (!Auth::check()) {
abort(403, 'Access denied');
}
return $next($request);
}
Vous pouvez gérer ces exceptions dans App\Exceptions\Handler
En remplaçant render()
Par exemple:
public function render($request, Exception $e)
{
if($e instanceof HttpException && $e->getStatusCode() == 403){
return new JsonResponse($e->getMessage(), 403);
}
return parent::render($request, $e);
}