[英]Laravel 8 Auth middleware protected route failing
我正在使用 Metronic 8 Laravel 主題構建我的第一個 Laravel 應用程序。 它使用 Breeze 進行身份驗證。 我改變了一些東西 - 為未登錄的用戶創建了一個歡迎頁面,並將作為索引的主模板移動到一個受身份驗證保護的"/dashboard"
。 問題是它仍然嘗試加載儀表板 Blade 模板,而不管身份驗證,導致錯誤。
路線
Route::get('/dashboard', function () {
return view('dashboard');
})->middleware(['auth'])->name('dashboard');
這是 Authenticate,它應該將未經身份驗證的用戶重定向到登錄頁面。
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
return route('login');
}
}
當我沒有登錄並導航到儀表板 URL 時,它會嘗試加載儀表板 Blade 模板,該模板調用一個菜單函數來檢查菜單項的用戶權限。 不幸的是,由於沒有用戶,應用程序因將空值傳遞給需要用戶array/object
的方法而崩潰。
關於在哪里尋找問題的任何想法? 在我看來,身份驗證中間件應該在未登錄時嘗試加載 Blade 模板之前重定向到登錄頁面。
我會像這樣將中間件放在路線的開頭,盡管我確定它不會導致問題-
Route::middleware(['auth'])->get('/dashboard', function () {
return view('dashboard');
})->name('dashboard');
除此之外,請提供有關錯誤本身的一些信息,例如錯誤是關於什么/說什么......等等......
首先,確保您在routes/web.php
文件中定義了一個名為 route 的login
名。 它應該看起來像:
Route::get('/login', '<controller>@<method>')->name('login');
重要的一點是->name('login')
以便Authenticate
中間件可以正確識別要重定向到的路由。 適當更改<controller>@<method>
以路由到您的應用程序的登錄方法。
Wakil 的回答無關緊要,實際上與 文檔相反。 你的語法是正確的。
我想通了這個問題。 Keen Themes 調用了一種方法,以在 Web 路由文件中構建菜單項數組。 那是調用有問題的代碼。 在我將其包裝在身份驗證檢查中后,錯誤已修復,一切都按預期工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.