我正在laravel5中编写一个中间件,我想通过中间件的代码403来禁止异常。我的中间件功能如下。
use Exception;
public function handle($request, Closure $next) {
if (!Auth::check()) {
throw new Exception("Access denied", 403);
}
return $next($request);
}
我正在从控制器调用中间件,我收到的代码为500但不是403的错误消息。我该如何解决这个问题?
答案 0 :(得分:23)
您只需使用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);
}