仅限管理员更改/编辑AEM组件的特定API密钥

时间:2016-05-17 17:49:50

标签: permissions cq5 aem

我创建了一个组件,使用他们的免费API显示第三方来源(openweathermap.org/api)的天气信息。为此,我创建了一个servlet并通过maven build将其上传到AEM。组件工作正常,并根据需要获取详细信息。

由于您使用的是APIKey,因此您的站点应允许在不更改代码的情况下更改/更新密钥,并在不重新启动CQ的情况下立即激活。 - 只有管理员才能做到这一点,作者不应该看到或担心密钥

参考链接:system/console permissions

我经历过很多论坛但没有帮助。我确信我们必须在http://localhost:4502/system/console/configMgr工作 - 但是哪个部分和哪些变化不确定。还有如何使用更改的API密钥触发servlet。 提前致谢

1 个答案:

答案 0 :(得分:0)

您可以创建可配置的OSGI服务。然后,API密钥将成为该服务的属性,管理员可以从Felix控制台修改该属性。

要创建OSGI服务,您应该使用Felix SCR注释并在maven构建过程中处理这些注释,以生成适当的部署描述符。这是一个简单的例子。

@Component(immediate=true, label="Weather Service", description="My weather service", metatype=true)
@Service(value=WeatherService.class)
public class WeatherServiceImpl implements WeatherService {

    @Override
    public String getWeatherInfo() {
        return null; // call the weather api here
    }
}

使用@Property注释定义您的可配置属性,如下所示,并在服务的activate方法中将其分配给在bundle install上激活服务时调用的方法。

@Property(value="123456789")
static final String WEATHER_API_KEY = "weather.api.key";

private String weatherAPIKey;


@Activate
public void activate(final Map<String, Object> props) {
    this.weatherAPIKey = (String)props.get(WEATHER_API_KEY);
}

在此之后,您应该在Felix控制台中看到您的可配置服务。

即将获得权限,作者根本不应该拥有Felix控制台的权限。只有管​​理员才能访问它。