我有中间件的路由组(我使用Zizaco/entrust包):
Route::group(['as' => 'admin.', 'prefix' => 'admin', 'middleware' => ['role:admin']], function (){
...
});
当我尝试在未经过身份验证的情况下输入http://mysite/admin
时,我会遇到异常
Symfony \ Component \ HttpKernel \ Exception \ HttpException
没有消息
但我想返回403 我试着这样做:
Route::fallback(function(){
abort(403);
});
但它没有帮助。
编辑1:这里我们在Laravel 5.5.28中有exception handle
public function abort($code, $message = '', array $headers = [])
{
if ($code == 404) {
throw new NotFoundHttpException($message);
}
throw new HttpException($code, $message, null, $headers);
}
如您所见,没有403
句柄。
答案 0 :(得分:0)
您必须修改handle 角色中间件方法
public function handle($request, Closure $next, $roles)
{
if (!is_array($roles)) {
$roles = explode(self::DELIMITER, $roles);
}
if ($this->auth->guest() || !$request->user()->hasRole($roles)) {
abort(403); // notice here it returns 403
}
return $next($request);
}