私が作りました
アプリ/フロントエンド/config/security.yml
dev:
default:
is_secure: false
prod:
default:
is_secure: true
しかし、それは機能していません。何か不足していますか?
steveが言うように、is_secureは環境ごとに構成することはできません。
私の推測では、開発環境全体をパスワードで保護しようとしていますか?この方法でサイトを保護するには、.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::flattenConfigurationではself::flattenConfigurationWithEnvironmentを使用することです。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にconfig_handlers.ymlファイルを作成して、symfonyにこのクラスを使用するように指示します。
modules/*/config/security.yml:
class: sfSecurityConfigHandler
file: %sf_lib_dir%/path/to/mySecurityConfigHandler
これで、質問に従ってymlを使用して、環境ごとにセキュリティを構成できるようになります。
正確に何を達成しようとしていますか?プロパティの目的を誤解している可能性があると思いますis_secure
。
一般に、環境全体を保護するのではなく、アプリケーションのどのモジュール/アクションが ( sfGuardなどのプラグインからの) 認証を必要とするかを宣言するために使用されます。