我正在使用spatie權限模塊來控制我的站點中的角色和權限。我已經添加了一點到Authenticate中間件。我的把手現在看起來是這樣的:Laravel返回HttpException對象而不是顯示自定義錯誤頁面
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->guest())
{
if ($request->ajax() || $request->wantsJson())
return response('Unauthorized.', 401);
return redirect()->guest('login');
}
if (! Auth::user()->can('access acp'))
{
if ($request->ajax() || $request->wantsJson())
return response('Unauthorised.', 403);
abort(403, "You do not have permission to access the Admin Control Panel. If you believe this is an error please contact the admin who set your account up for you.");
}
return $next($request);
}
因此,如果用戶沒有登錄我們送他們到登錄頁面,否則我們檢查,如果有權限訪問ACP,如果不向他們展示403錯誤。我已將403.blade.php添加到views/errors文件夾。但是,當我運行該代碼時,我只是得到一個哎呀!並且開發者工具顯示正在返回一個500 ISE。我不明白爲什麼我沒有看到我的自定義錯誤頁面。
到目前爲止,我已嘗試將環境切換到生產並關閉調試模式,但不顯示頁面。我也嘗試拋出一個授權異常,但這並沒有什麼不同。我也試過使用App::abort()
,但是我仍然拿到了500 ISE。
我試過谷歌搜索的問題,但我找不到任何人有這個問題。我真的很感激任何幫助,讓這個工作。
哎呦返回
如果我修改代碼正是如此
try
{
abort(403, "You do not have permission to access the Admin Control Panel. If you believe this is an error please contact the admin who set your account up for you.");
} catch (HttpException $e)
{
dd($e);
}
然後我得到的HttpException
實例與我的錯誤代碼和消息,爲什麼不說則顯示一個自定義錯誤頁面?
什麼異常消息是你看到你做500? – Max
它向我顯示了我傳遞給中止的消息,'您無權訪問管理控制面板。如果您認爲這是一個錯誤,請聯繫爲您設置帳戶的管理員.' – Styphon
您是否檢查過您的PHP錯誤日誌? 500表示我們正在談論更高級別的錯誤。 – Dencker