我需要在Sling中提供Restful API,但对于某些不在repo中的数据...此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;
}
当我去/东西时,我得到403.如何控制不存在的资源的身份验证/授权规则?
另外,我无法使用ResourceProvider示例代码here,因为它使用的spi包不在Sling 8中... Sling 8使用旧版本的sling api封装