在laravel 5.5中的验证csrf令牌中没有得到错误令牌不匹配异常

时间:2017-09-12 07:14:01

标签: php forms laravel csrf laravel-5.5

我是Laravel的新手,我正在使用Laravel 5.5 当我在没有{{ csrf_field() }}的情况下提交时 验证csrf令牌

中没有出现错误令牌不匹配异常

错误是

  

由于不活动,该页面已过期。       请刷新并重试

我的HTML表单是

<form method="POST" action="/post">

    <div class="form-group">
        <label for="title">Title</label>
        <input type="text" class="form-control" name="title">

    </div>

    <div class="form-group">
        <label for="textblog">Body</label>
        <input type="textarea" class="form-control" name="body">
    </div>

    <button type="submit" class="btn btn-primary">Publish</button>
</form>

我的路线网络文件

Route::post('/post','PostsController@store');

这是我的Controller类函数

public function store() {
    dd(request()->all());
}

2 个答案:

答案 0 :(得分:0)

在laravel里面似乎是一个问题。它显示不正确的消息。有一些类似的帖子:1stlink2ndlink

你应该把你的csrfField放在那里,问题就会消失。 关于laravel错误的其他链接:

Larave 5.5: default error views and costomizing them

Laravel 5.5: set error details via debug option

答案 1 :(得分:0)

正如@Shaz在https://es.stackoverflow.com/questions/99342/laravel-5-5-the-page-has-expired-due-to-inactivity-please-refresh-and-try-aga中所说的

在Laravel 5.5中,“TokenMismatch”会抛出代码为419的异常

更新:..以及一个错误页面,其中包含“由于不活动而导致页面已过期。请刷新并重试”

我建议安装https://github.com/barryvdh/laravel-debugbar 所以你可以看到例外。

你可能会看到 ../供应商/ laravel /框架/ SRC /照亮/粉底/ HTTP /中间件/ VerifyCsrfToken.php#70

 return $this->addCookieToResponse($request, $next($request));
    }

    throw new TokenMismatchException;
}

更新

  

当我在没有{{csrf_field()}}的情况下提交时,验证csrf令牌中的错误令牌不匹配异常

您正在获取不匹配异常但使用新的错误页面和代码。 (https://laravel-news.com/laravel-5-5-error-views

{{csrf_field()}}创建一个隐藏着令牌的输入,因此您必须在表单中使用它(同时检查表单中的令牌是否为空)

<input type="hidden" name="_token" value="nReVYpjfvqiVVkE8LpGeNOdJZnskNLGoB57YHFkO">