應用/前端/配置/ security.yml
dev:
default:
is_secure: false
prod:
default:
is_secure: true
,但它不工作,我失去了什麼?
應用/前端/配置/ security.yml
dev:
default:
is_secure: false
prod:
default:
is_secure: true
,但它不工作,我失去了什麼?
正如史蒂夫所說,is_secure不能在每個環境的基礎上進行配置。
我的猜測是你試圖密碼保護你的整個開發環境?我建議你使用.htaccess/.htpasswd保護或相當於這種方式來保護網站。
如果您不能或出於某種原因想這樣做在symfony中,你可以做的symfony以這種方式接受的配置通過創建自定義sfSecurityConfigHandler.class.php
配置處理器已經在他們的方法叫做getConfiguration - 負責獲取在各種yml文件中設置的值,並在應用了所有over-rides之後創建最終值的數組。
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 over 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
然後,您應該能夠使用作爲陽明海運根據問題來配置每個環境的安全性。
你究竟想達到什麼目的?我想你可能會誤解is_secure
財產的目的。
通常用於聲明應用程序的哪些模塊/動作需要身份驗證(來自插件(如sfGuard)),而不是用於保護整個環境。
我想爲測試目的禁用安全性,而無需手動修改配置,這對我來說更方便。 是的,我的一些模塊已被證實,我只是想在開發環境中沒有安全性的情況下進行測試。 – belaz
不幸的是我認爲唯一的方法是在每個安全模塊中將開發環境設置爲'is_secure:false'。 – Steve
相同,環境特定的配置在模塊中不起作用。 – belaz