Dar*_*s.V 6 forms symfony-forms symfony csrf-protection
我在这里阅读教程
https://symfony.com/doc/current/form/csrf_protection.html
如何添加csrf令牌.它说要使用
form_end()
Run Code Online (Sandbox Code Playgroud)
在模板中.但这不起作用,给出错误:
类型错误:函数Symfony\Component\Form\FormRenderer :: renderBlock()的参数太少,在E:\ projektai\php projektai\htdocs\mokomieji\symfony_4_demo\var\cache\dev\twig\bb\bb2248f7be504240fcc2ab43dabf593090ebc4c897ce72b1a979082d62914b47中传递0. php在48行,预计至少有2个
这里的答案显示了如何修复,但只有当你构建了表单对象时:
Symfony Type错误:函数FormRenderer :: renderBlock()的参数太少
没有表格对象怎么做?这是从登录文档页面登录:
{% if error %}
<div>{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}
<form action="{{ path('login') }}" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="_username" value="{{ last_username }}" />
<label for="password">Password:</label>
<input type="password" id="password" name="_password" />
<button type="submit">Login</button>
{{ form_end() }}
Run Code Online (Sandbox Code Playgroud)
Mat*_*teo 10
您可以使用此处csrf_token doc中描述的辅助树枝功能,例如:
<input type="hidden" name="_csrf_token"
value="{{ csrf_token('authenticate') }}"
>
Run Code Online (Sandbox Code Playgroud)
这个答案更有帮助.
更新:
其他策略:从控制器传递:
$tokenProvider = $this->container->get('security.csrf.token_manager');
$token = $tokenProvider->getToken('example')->getValue();
Run Code Online (Sandbox Code Playgroud)
希望这有帮助
您可以用来{{ form_row(form._token) }}在Symfony 3中为表单渲染生成所需的CSRF令牌字段(我目前在Symfony 3.4中使用此方法)。
| 归档时间: |
|
| 查看次数: |
8682 次 |
| 最近记录: |