隨著 Laravel 5.7 的推出,有許多使用者反映存取路由出現了問題。這個問題的出現可能會讓你在開發過程中浪費大量的時間來處理。為了幫助大家解決這個問題,本文將詳細介紹 Laravel 5.7 存取不了路由的解決方案。
首先我們需要了解 Laravel 5.7 的一些新變化,這些變化可能會導致先前的程式碼無法正常運作。其中最重要的一個變化是預設添加了 CSRF 保護中間件。這個中間件可以確保用戶提交的表單資料是否來自於你的應用程序,防止應用程式遭受 CSRF 攻擊。
CSRF 保護中介軟體在 Laravel 5.6 中已經存在,但預設並沒有啟用。但在 Laravel 5.7 中,Laravel 團隊預設啟用了這個中間件。因此,在 Laravel 5.7 中,使用表單提交資料時需要新增 CSRF 令牌。
解決方法:
有兩種方法可以解決 Laravel 5.7 存取不了路由的問題。第一種方法是在 web.php 檔案中新增 CSRF 令牌。第二種方法是停用 CSRF 保護中介軟體。
方法一:在web.php 檔案中新增CSRF 令牌
Laravel 5.7 程式碼的RouteServiceProvider.php 中預設使用了web 中間件群組,因此,在web.php 檔案中添加CSRF 令牌最簡單的方法就是使用{{ csrf_field() }} 方法。
例如,如果你有一個處理POST 請求的路由:
Route::post('/foo', function () {
return 'Hello World';
});
你需要在表單中加入{{ csrf_field() }} 方法來產生CSRF 令牌:
4d7a02db55d48fb4795b6f9a4532230c
{{ csrf_field() }} <!-- ... -->
f5a47148e367a6035fd7a2faa965022e
這個方法可以確保你的Laravel 5.7 應用程式可以正常處理POST 請求。
方法二:停用 CSRF 保護中介軟體
停用 CSRF 保護中介軟體是另一個解決 Laravel 5.7 存取不了路由的方法。雖然這種方法可能會稍微降低你的 Laravel 應用程式的安全性,但如果你的應用程式不會受到 CSRF 攻擊的威脅,那麼這種方法是可行的。
要停用 CSRF 保護中間件,你需要在 VerifyCsrfToken 類別的 $except 屬性中加入要忽略的 URI。
開啟app/Http/Middleware/VerifyCsrfToken.php 文件,然後在$except 屬性中加入要忽略的路由:
protected $except = [
'your-route-to-ignore'
];
例如,假設你想忽略「register」路由:
protected $except = [
'register'
];
這個方法可以確保你的Laravel 5.7 應用程式可以正常處理所有請求。
結論:
總的來說,在 Laravel 5.7 中存取不了路由的問題主要是由於預設啟用了 CSRF 保護中間件所導致的。因此,如果你在開發的過程中遇到了這個問題,可以嘗試用這兩種方法來解決。如果你要停用 CSRF 保護中間件,應該只對那些不涉及敏感或重要資料的路由使用。這個方法可能會略微降低你的 Laravel 應用程式的安全性,因此建議使用方法一來確保你的應用程式的安全性。
以上是laravel 5.7訪問不了路由的詳細內容。更多資訊請關注PHP中文網其他相關文章!