我正在使用来自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'
的情况?
我是正确的,或者我错过了什么?
答案 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";