带有 Sling 8.. 403 响应的 ResourceProvider

ResourceProvider with Sling 8.. 403 response

我需要在 Sling 中提供 Restful API,但对于一些不在存储库中的数据...此 API 将代理到其他外部数据存储。

Sling 开发人员建议创建 ResourceProvider。我已经创建了这个 ResourceProvider 实现,但是当我请求它时收到 403:

@Component
@Service(value=ResourceProvider.class)
@Properties({
        @Property(name = ResourceProvider.ROOTS, value = "things"),
        @Property(name = ResourceProvider.OWNS_ROOTS, value = "true")
})
public class ImageResourceProvider implements ResourceProvider {

@Override
public Resource getResource(ResourceResolver resourceResolver, String path) {
    Resource returnResource = new SyntheticResource(resourceResolver, path, "edlio/microservice/image");
    returnResource.getValueMap().put("myProp" , "myValue");
    return returnResource;
}

@Override
public Resource getResource(ResourceResolver resourceResolver, HttpServletRequest httpServletRequest, String path) {
    return getResource(resourceResolver , path);
}

@Override
public Iterator<Resource> listChildren(Resource resource) {
    return null;
}

当我转到 /things 时,我得到了 403。我如何控制这个不存在的资源的 authentication/authorization 规则?

此外,我无法使用 ResourceProvider 示例代码 here,因为它使用了不在 Sling 8 中的 spi 包...Sling 8 使用旧版本的 sling api 包.

我自己解决了这个问题并在这里发布了我的答案: Adobe CQ5 custom servlet path

从lance.dolan

中搜索答案