一:通过访问的workflowSession获取
ResourceResolver resourceResolver = workflowSession.adaptTo(ResourceResolver.class);
二:通过系统中保存的账户获取
- 去
localhost:<port>/crx/explorer
=>User Administration
=>Create System User
创建一个用户
创建用户 -
为用户配置目录访问权限
配置权限 - 在 “Apache Sling Service User Mapper Service”中新增一个条目
访问localhost:<port>/system/console/configMgr
,搜索Apache Sling Service User Mapper Service
新增条目
新增条目的格式:<bundle名称>:<服务名>=<用户ID>
, 服务名代码中会用到 - 通过工厂方式以新增的用户身份获取ResourceResolver
Map<String, Object> param = new HashMap<String, Object>();
// 服务名在这里用到
param.put(ResourceResolverFactory.SUBSERVICE, “writeService”);
ResourceResolver resolver = resolverFactory.getServiceResourceResolver(param);
resolverFactory可直接通过reference注解引进来
@Reference
private ResourceResolverFactory resolverFactory;
总结:
第一种方式有局限性,如果登陆的用户没有某个目录的操作权限,那么就不能进行后续的操作。
第二种是先建立有权限的用户,然后以这个用户进行获取Resolver,确保操作可顺利进行。
网友评论