获取动态CSRF令牌

时间:2019-06-13 11:15:51

标签: laravel csrf csrf-protection

我具有从模型生成表单的功能。

类别模型:

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;
}

不起作用。 在我的 *视图中,它显示了隐藏的输入令牌,但没有任何价值。

3 个答案:

答案 0 :(得分:0)

您可以将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()) }}

答案 1 :(得分:-1)

请确保.env文件中的APP_KEY不为空。如果为空,则运行“ php artisan key:generate”以生成该文件。设置APP_KEY之后,一切都会正常运行。

答案 2 :(得分:-1)

尝试

 public static function generateForm() {

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