Laravel在每次刷新时创建新的CSRF令牌

时间:2016-06-12 03:03:34

标签: laravel

我正在使用Laravel版本5.2.37。我在刀片视图中有一个简单的HTML表单,其中包含以下行:

<input type="hidden" name="_token" id="token" value="{{ csrf_token() }}">

当我将代码上传到客户端的共享主机(Cpanel,PHP 5.5.36)时,如果没有提交表单,我点击刷新并且csrf标记值不断变化。

但是,在我的本地计算机(MacOS / Apache2 / 5.6.16)上,csrf令牌会持续至少2分钟(每个config / session.php设置)。可能是造成这种情况的旧的5.5.36版本的PHP吗?

2 个答案:

答案 0 :(得分:1)

尝试将config / session.php中的“domain”定义到正确的路径。默认情况下,它设置为null,但在服务器上,您应该清除它。

答案 1 :(得分:1)

好吧,我终于明白了。愚蠢的我做了一个自定义助手,其功能看起来像这样:

<?php
function doSomething($arg)
{
    ?><p>When this function is called, 
    display <b><?php echo $arg; ?> value.</b></p>
    <?php
}
?>

你可能已经在WordPress中看到过很多这样的函数。虽然它不是工匠代码,但在大多数情况下它会正常工作,但是Laravel在处理帮助时不会容忍这种类型的废话。因此,在我编写函数以返回字符串之后,所有内容都恢复正常:

<?php    
function doSomething($arg)
{
    return '<p>When this function is invoked, 
    display <b>' . $arg . '</b> value.</p>'; 
}    
?>

故事的道德 - 不要写丑陋的代码。确保您的函数返回并且永远不会直接回显/打印字符串,尤其是使用辅助函数。