首页  >  文章  >  php框架  >  laravel 5.7访问不了路由

laravel 5.7访问不了路由

WBOY
WBOY原创
2023-05-20 15:59:39554浏览

随着 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn