falconchen/slim-twig-csrf-inputs

一个用于简化添加隐藏的CSRF输入字段的slim twig模板扩展

v1.0.4 2019-06-25 09:41 UTC

This package is auto-updated.

Last update: 2024-09-25 21:53:11 UTC


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">