я сделал
apps/frontend/config/security.yml
dev:
default:
is_secure: false
prod:
default:
is_secure: true
но он не работает, я что-то пропустил?
я сделал
apps/frontend/config/security.yml
dev:
default:
is_secure: false
prod:
default:
is_secure: true
но он не работает, я что-то пропустил?
Как говорит Стив, is_secure нельзя настроить для каждой среды отдельно.
Я предполагаю, что вы пытаетесь защитить паролем всю свою среду разработки? Я бы посоветовал вам использовать защиту .htaccess/.htpasswd или аналогичную для защиты сайта таким образом.
Если вы не можете или по какой-либо причине хотите сделать это в symfony, вы можете заставить symfony принимать конфигурацию таким образом, создав собственный sfSecurityConfigHandler.class.php
В обработчиках конфигурации есть метод 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::flattenConfiguration. Я думаю, если вы расширите 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 в соответствии с вопросом для настройки безопасности для каждой среды.
Чего именно вы пытаетесь достичь? Я думаю, вы можете неправильно понять назначение свойства is_secure
.
Обычно он используется для объявления того, какие модули/действия приложения должны требовать аутентификации (из подключаемого модуля, такого как sfGuard), а не для защиты всей среды.
is_secure: false
в каждом защищенном модуле.
- person Steve; 21.02.2010
all: is_secure: true dev: is_secure: false
Не работает? Прости; Я в тупике!
- person Steve; 21.02.2010