首頁 >php框架 >Laravel >laravel 5.7訪問不了路由

laravel 5.7訪問不了路由

WBOY
WBOY原創
2023-05-20 15:59:39586瀏覽

隨著 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn