首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在symfony中通过环境保护应用程序?

如何在symfony中通过环境保护应用程序?
EN

Stack Overflow用户
提问于 2010-02-21 10:51:46
回答 2查看 1.3K关注 0票数 1

我做了一个

应用程序/前端/config/security.yml

代码语言:javascript
复制
dev:
 default:
  is_secure: false

prod:
 default:
  is_secure: true

但这不管用,我是不是漏掉了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-21 14:03:39

正如史蒂夫所说,is_secure不能在每个环境的基础上进行配置。

我猜您是在尝试密码保护整个dev环境吗?我建议您使用..htaccess/..htpasswd保护或等效以这种方式保护站点。

如果您不能或出于任何原因想在symfony中这样做,则可以通过创建自定义sfSecurityConfigHandler.class.php使symfony接受配置。

配置处理程序在它们中有一个名为getConfiguration的方法--它负责获取各种yml文件中设置的值,并在应用了所有重载等之后创建最终值的数组。

sfSecurityConfigHander.class.php有这样一个getConfiguration:

代码语言:javascript
复制
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 )的配置有如下所示:

代码语言:javascript
复制
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扩展为:

代码语言:javascript
复制
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使用这个类:

代码语言:javascript
复制
modules/*/config/security.yml:
  class:    sfSecurityConfigHandler
  file:     %sf_lib_dir%/path/to/mySecurityConfigHandler

然后,您应该能够按照问题使用yml来配置每个环境的安全性。

票数 3
EN

Stack Overflow用户

发布于 2010-02-21 11:29:02

你到底想达到什么目的?我想你可能误解了is_secure财产的用途。

通常,它用于声明应用程序的哪些模块/操作需要身份验证(来自插件(如sfGuard) ),而不是保护整个环境。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2305619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档