为什么 sling:OsgiConfig 节点无法在 AEM 中的 /etc/folder 中工作?
Why sling:OsgiConfig node not working in /etc/folder in AEM?
我有一个具有如下属性的组件。
@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
,那是行不通的。
使用默认设置,JCR Installer Provider 不会在 /libs
和 /apps
以外的文件夹中查找可安装的捆绑包和节点 (sling:OsgiConfig
)。所以 /etc
中的任何配置都不会被加载。
如果您想更改此行为,请在 osgi 配置控制台的 "Apache Sling JCR Installer" 配置中创建一个搜索路径条目。但请注意,不建议这样做,您不应该首先将任何 sling:osgiconfig
节点放在 /etc
中。
请注意,将配置节点放在 /etc
下是一个非常糟糕的主意。
从安全的角度来看,/libs
和 /apps
已被锁定,但是 /etc/
您至少会面临两个主要的安全漏洞:
- 匿名用户可以读取 OSGi 配置
- 非特权用户可以部署代码
请重新考虑将 /etc
路径添加到 JCR 安装程序搜索路径条目,并将您的配置部署到 /apps
。
我有一个具有如下属性的组件。
@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
,那是行不通的。
使用默认设置,JCR Installer Provider 不会在 /libs
和 /apps
以外的文件夹中查找可安装的捆绑包和节点 (sling:OsgiConfig
)。所以 /etc
中的任何配置都不会被加载。
如果您想更改此行为,请在 osgi 配置控制台的 "Apache Sling JCR Installer" 配置中创建一个搜索路径条目。但请注意,不建议这样做,您不应该首先将任何 sling:osgiconfig
节点放在 /etc
中。
请注意,将配置节点放在 /etc
下是一个非常糟糕的主意。
从安全的角度来看,/libs
和 /apps
已被锁定,但是 /etc/
您至少会面临两个主要的安全漏洞:
- 匿名用户可以读取 OSGi 配置
- 非特权用户可以部署代码
请重新考虑将 /etc
路径添加到 JCR 安装程序搜索路径条目,并将您的配置部署到 /apps
。