切换服务器后,Laravel CsrfToken将在刷新时到期

时间:2016-10-08 13:41:23

标签: php laravel nginx

我知道我的问题不是因为Laravel而是很可能是php配置(会话),但我不知道该检查什么。我在homestead上运行这个特定的项目,很好。现在,在我提交表单(它是一个步骤控制器,post表单 - >转到第2步等)并刷新页面后,我的csrf令牌无效。

我认为这是因为会话生命周期和此类或新令牌的生成,但没有..令牌是相同的,但在刷新页面后我仍然得到TokenMismatchException

环境与宅基地几乎相同(nginx(最新),php(5.6,我不知道什么是宅基地))。登录工作正常,我在浏览时保持登录状态,但是当我完成这些步骤时,就会发生这种情况。

问题&溶液

根据我忘记更新的评论,我发现问题实际上是,dev服务器被强制通过cloudflare,但是Laravel的基本URL留在http://... - 我刚添加到AppServiceProvider

$this->app['request']->server->set('HTTPS', true);

并且没有执行验证错误。

2 个答案:

答案 0 :(得分:0)

您是否使用您提交的表单发送了csrf令牌?如果没有:你是如何使用FormBuilder或Html构建表单的?

<强> FormBuilder

在formbuilder中,CSRF令牌已经发布,因此不需要发送它。

<强> HTML

<form method="POST" action="/profile">
    {{ csrf_field() }} //This is what you need!
    ...
</form>

您没有提供错误日志,请检查您的laravel项目中的存储/日志,然后向我们提供错误,以便我们为您提供帮助。

答案 1 :(得分:0)

根据我忘记更新的评论,我发现问题实际上是,dev服务器被强制通过cloudflare,但是Laravel的基本URL留在http://... - 我刚添加到AppServiceProvider

 $this->app['request']->server->set('HTTPS', true);

并且它没有执行验证错误。