Laravel-419提交表格时出现问题

时间:2019-08-02 04:39:54

标签: laravel authentication session csrf laravel-5.8

在Laravel应用程序中提交表单时遇到问题。报告了 419错误。

我的代码:

<form action="login" method="POST">
        <input id="csft_pass" type="hidden" name="_token" value="{{ csrf_token() }}">
        .....
</form>

我尝试修复它:

<form action="login" method="POST">
        @csrf
        .....
</form>

但是,仍然出现错误419

上述代码仍能正常运行,今天突然出现错误

我尝试了许多类似php artisan cache:clear的方法,但仍然无法解决问题。

我的Laravel版本:5.8

更新:我在stackoverflow上尝试了很多解决方案,但仍然无法解决。我认为是因为应用程序的会话有问题

4 个答案:

答案 0 :(得分:1)

表单标签后,使用 csrf_field

{{ csrf_field() }}

如果您使用的是 ajax ,则可以在元标记上传递 csrf 令牌。

<meta name="csrf-token" content="{{ csrf_token() }}">

答案 1 :(得分:0)

您可以使用str_replace帮助器来生成令牌字段:

csrf_field

OR

<form method="POST" action="/login">
    @csrf
    ...
</form>

它不起作用,然后刷新浏览器缓存,现在它可能起作用。


为什么需要:刷新浏览器缓存

当我们更新应用程序时,浏览器可能仍会使用旧文件。如果您不清除缓存,则旧文件在您申请时可能会遇到问题。


有关更多详细信息,请打开链接:-Error - 419 Sorry, your session has expired

答案 2 :(得分:0)

  

上述代码仍能正常运行,今天突然出现错误

这使我怀疑仅在提交表单之前打开表单两个小时以上(这是lifetime中的config/session.php的默认值)时才会发生错误。

在这种情况下,您可以将lifetime设置为120分钟以上的值,或者在前端进行一些操作以保持会话的存活,例如某些自定义JavaScript(用于单个表单),如所选内容中所述。 this threadLaravel Caffeine(针对整个应用)的答案

答案 3 :(得分:0)

替换这些行 <input type="hidden" name="_token" value="{{ csrf_token() }}">