【问题标题】:get dynamic csrf token获取动态 csrf 令牌
【发布时间】:2019-10-27 23:21:16
【问题描述】:

我有从模型生成表单的函数。

类别模型:

public static function generateForm()
{
    $output = '';

    $output .= '<form action="/category" method="post">
                '. csrf_field() .'
                <input type="text">
                <input type="submit" value="Submit" id="">                      
            </form>';
    return $output;
}

它不工作。 在我的 *view 中,它显示了隐藏的输入标记,但没有得到任何值。

【问题讨论】:

  • 您能否详细说明“它显示隐藏的输入令牌但没有获得任何价值”的意思?
  • 我的 html 中没有值

标签: laravel csrf csrf-protection


【解决方案1】:

您可以将csrf_token 从视图动态传递给该函数 html。

这是一个例子:-

Category.php

public static function generateForm($token)
{
    $output = '';

    $output .= '<form action="/category" method="post">
                <input type="hidden" name="csrf_token" value="'.$token.'">
                <input type="text">
                <input type="submit" value="Submit" id="">                      
            </form>';
    return $output;
}

现在您只需将参数传递给您正在调用的此函数。像这样:-

view.blade.php

{{ $category->generateForm(csrf_token()) }}

【讨论】:

  • 和以前一样。
  • @kundefine 你能附上你的截图和你表单的检查元素吗?
【解决方案2】:

请确保 .env 文件中的 APP_KEY 不为空。如果它是空白的,那么运行“php artisan key:generate”来生成它。设置APP_KEY后一切正常。

【讨论】:

  • 如果APP_KEY 为空,laravel 会立即抛出错误,整个应用程序将无法运行
【解决方案3】:

试试这个

 public static function generateForm() {

        $output = '<form action="/category" method="post">'.
                               csrf_field().
                              '<input type="text">
                              <input type="submit" value="Submit" id="">                      
                          </form>';
        return $output;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 2017-01-25
    • 2012-03-20
    • 2020-06-28
    • 2014-08-20
    • 2021-07-28
    • 2018-12-23
    相关资源
    最近更新 更多