随着 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 令牌:
0b834b96616a4ef19ed6b0170a6c7fe4
{{ 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中文网其他相关文章!