【问题标题】:Why sling:OsgiConfig node not working in /etc/folder in AEM?为什么 sling:OsgiConfig 节点在 AEM 的 /etc/folder 中不起作用?
【发布时间】:2016-03-01 06:41:12
【问题描述】:

我有一个组件,其属性如下。

@Component(immediate = true, metatype = true, label = "Conf Details")
@Service(value = { LocationConfigurationUtil.class })
@Properties({
        @Property(label = "location blueprint", name = "locationPath", value = "", description = "..."),
        @Property(label = "location page template", name = "locationTemplate", value = "", description = "..."),
        @Property(label = "basepath live copies", name = "liveCopyRoot", value = "/content/WebRoot", description = "...") })
public class LocationConfigurationUtil {
@Activate
    protected void activate(Map<String, Object> mapCreated) {
          // some code
    }
}

为了使其在 jcr 节点中可编辑属性,我使用了非标准方法。我在路径/apps/system/config 中创建了sling:OsgiConfig,并在java 代码中声明了属性,这工作正常。

但如果我只是在/etc/myapp/myconfig 内有相同的sling:OsgiConfig,它就行不通了。

【问题讨论】:

    标签: java osgi aem jcr sling


    【解决方案1】:

    使用默认设置,JCR 安装程序提供程序不会在 /libs/apps 以外的文件夹中查找可安装的包和节点 (sling:OsgiConfig)。所以/etc 中的任何配置都不会被加载。

    如果您想更改此行为,请在 osgi 配置控制台的“Apache Sling JCR Installer”配置中创建搜索路径条目。但请注意,不建议这样做,您首先不应将任何sling:osgiconfig 节点放在/etc 中。

    【讨论】:

    • 在添加/etc:300 后,它开始在/etc/system/config/ 工作。但在文件夹/etc/myapp/myconfig 内仍然无法正常工作。
    • 将文件夹 myconfig 重命名为 config。
    【解决方案2】:

    请注意,将配置节点放在/etc 下是一个非常糟糕的主意。

    从安全角度来看,/libs/apps 已被锁定,但使用 /etc/ 您至少会面临两个主要的安全漏洞:

    • 匿名用户可以读取 OSGi 配置
    • 代码可由非特权用户部署

    请重新考虑将 /etc 路径添加到 JCR 安装程序搜索路径条目,并将您的配置部署到 /apps

    【讨论】:

      猜你喜欢
      • 2017-06-19
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 2013-12-27
      • 2017-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多