我做了一个
应用程序/前端/config/security.yml
dev:
default:
is_secure: false
prod:
default:
is_secure: true但这不管用,我是不是漏掉了什么?
发布于 2010-02-21 14:03:39
正如史蒂夫所说,is_secure不能在每个环境的基础上进行配置。
我猜您是在尝试密码保护整个dev环境吗?我建议您使用..htaccess/..htpasswd保护或等效以这种方式保护站点。
如果您不能或出于任何原因想在symfony中这样做,则可以通过创建自定义sfSecurityConfigHandler.class.php使symfony接受配置。
配置处理程序在它们中有一个名为getConfiguration的方法--它负责获取各种yml文件中设置的值,并在应用了所有重载等之后创建最终值的数组。
sfSecurityConfigHander.class.php有这样一个getConfiguration:
static public function getConfiguration(array $configFiles)
{
$config = self::flattenConfiguration(self::parseYamls($configFiles));
// change all of the keys to lowercase
$config = array_change_key_case($config);
return $config;
}而依赖于环境(如sfDatabaseConfigHandler.class.php )的配置有如下所示:
static public function getConfiguration(array $configFiles)
{
$config = self::replaceConstants(self::flattenConfigurationWithEnvironment(self::parseYamls($configFiles)));
foreach ($config as $name => $dbConfig)
{
if (isset($dbConfig['file']))
{
$config[$name]['file'] = self::replacePath($dbConfig['file']);
}
}
return $config;
}这里的主要区别是self::平坦flattenConfigurationWithEnvironment超过self::平坦配置的用法。我认为如果您将sfSecurityConfigHandler扩展为:
class mySecurityConfigHandler extends sfSecurityConfigHandler {
static public function getConfiguration(array $configFiles)
{
$config = self::flattenConfigurationWithEnvironment(self::parseYamls($configFiles));
// change all of the keys to lowercase
$config = array_change_key_case($config);
return $config;
}
}然后在您的配置中创建一个config_handlers.yml文件,告诉symfony使用这个类:
modules/*/config/security.yml:
class: sfSecurityConfigHandler
file: %sf_lib_dir%/path/to/mySecurityConfigHandler然后,您应该能够按照问题使用yml来配置每个环境的安全性。
发布于 2010-02-21 11:29:02
你到底想达到什么目的?我想你可能误解了is_secure财产的用途。
通常,它用于声明应用程序的哪些模块/操作需要身份验证(来自插件(如sfGuard) ),而不是保护整个环境。
https://stackoverflow.com/questions/2305619
复制相似问题