falconchen / slim-twig-csrf-inputs
一个用于简化添加隐藏的CSRF输入字段的slim twig模板扩展
v1.0.4
2019-06-25 09:41 UTC
Requires
- php: >=5.5.0
Requires (Dev)
- slim/csrf: ^0.5.0
- slim/slim: ^3.0
- slim/twig-view: ^1.1
README
一个用于简化添加隐藏的CSRF输入字段的slim twig模板扩展。
使用方法
在dependencies.php中加载扩展,同时还需要在依赖中加载\Slim\Csrf\Guard。
...
// Load Twig
$container['view'] = function ($c) {
$settings = $c->get('settings');
$view = new \Slim\Views\Twig($settings['view']['template_path'], $settings['view']['twig']);
// Add extensions
$view->addExtension(new Slim\Views\TwigExtension($c->get('router'), $c->get('request')->getUri()));
$view->addExtension(new Twig_Extension_Debug());
// add the twig csrf inputs here
$view->addExtension(new FalconChen\Slim\Views\TwigExtension\CsrfInputs($c->csrf));
return $view;
};
//need to load csrf
$container['csrf'] = function ($c) {
$guard = new \Slim\Csrf\Guard();
$guard->setFailureCallable(function ($request, $response, $next) {
$request = $request->withAttribute("csrf_status", false);
return $next($request, $response);
});
return $guard;
};
...
然后在twig模板中调用csrf_inputs()函数。
<form action="login" method="post" autocomplete="off">
{{ csrf_inputs() }}
...
输出
<input type="hidden" name="csrf_name" value="csrf653024471">
<input type="hidden" name="csrf_value" value="1924fe05051c809802334ab0601aeaa1">