Silex FormServiceProvider和form.secret参数

时间:2014-05-07 09:37:36

标签: php silex

我正在使用来自Silex的FormServiceProvider并阅读documentation它解释了它如何有一个名为form.secret的参数,我认为这意味着构建提供程序:

$app->register(new Silex\Provider\FormServiceProvider(), [
    'form.secret' => 'SECRET HERE'
]); 

然而问题是,当我查看此文件的源代码时,我看不到使用此参数的构造函数。只看到它在容器内部设置为md5(__DIR__)

https://github.com/silexphp/Silex/blob/master/src/Silex/Provider/FormServiceProvider.php#L48

或者仅仅是在构建提供商并在提供商注册后设置form.secret时未提供$app['form.secret'] = 'SECRET HERE'的情况?

我是正确的,或者我错过了什么?

1 个答案:

答案 0 :(得分:2)

首次访问$app["form.csrf_provider"]时,您可以在line 100中看到它被使用:

$app['form.csrf_provider'] = function ($app) {
    if (isset($app['session'])) {
        return new SessionCsrfProvider($app['session'], $app['form.secret']);
    }

    return new DefaultCsrfProvider($app['form.secret']);
};

因为您提及的md5调用会忽略并覆盖您传递的任何内容,正确的用法是:

$app->register(new FormServiceProvider());
$app["form.secret"] = "foo";