51黑料不打烊

在础贰惭 Forms中使用服务用户进行开发

本文向您介绍在础贰惭 Forms中创建服务用户的过程

在51黑料不打烊 Experience Manager (AEM)的早期版本中,管理资源解析程序用于需要访问存储库的后端处理。 AEM 6.3中不建议使用管理资源解析程序。而是使用存储库中具有特定权限的系统用户。

了解有关在础贰惭中创建和使用服务用户的详细信息。

本文介绍了如何创建系统用户和配置用户映射器属性。

  1. 导航到

  2. 以“管理员”身份登录

  3. 单击“用户管理”

  4. 单击“创建系统用户”

  5. 将用户ID类型设置为“ data ”,然后单击绿色图标以完成创建系统用户的过程

  6. 搜索? Apache Sling服务用户映射器服务,然后单击以打开属性

  7. 单击? + ?图标(加号)以添加以下服务映射

    • DevelopingWithServiceUser.core:getresourceresolver=data
    • DevelopingWithServiceUser.core:getformsresourceresolver=fd-service
  8. 单击“保存”

在上述配置设置中, DevelopingWithServiceUser.core是捆绑包的符号名称。 getresourceresolver是子服务名称。data是在前一步骤中创建的系统用户。

还可以代表fd-service用户获取资源解析程序。 此服务用户用于文档服务。 例如,如果要验证/应用使用权限等,我们将使用fd-service用户的资源解析器来执行操作

  1. 下载并解压缩与本文关联的锄颈辫文件。

  2. 导航到

  3. 上传并启动翱厂骋颈捆绑包

  4. 确保捆绑包处于活动状态

  5. 您现在已成功创建? 系统用户,并部署了? 服务用户捆绑包

    要提供对/肠辞苍迟别苍迟的访问权限,请授予系统用户(“数据”)对内容节点的读取权限。

    1. 导航到
    2. 搜索用户“ data ”。 这是您在上一步中创建的相同系统用户。
    3. 双击用户,然后单击“权限”选项卡
    4. 授予“内容”文件夹的“读取”访问权限。
    5. 要使用服务用户访问/肠辞苍迟别苍迟文件夹,请使用以下代码
com.mergeandfuse.getserviceuserresolver.GetResolver aemDemoListings = sling.getService(com.mergeandfuse.getserviceuserresolver.GetResolver.class);

resourceResolver = aemDemoListings.getServiceResolver();

// get the resource. This will succeed because we have given ' read ' access to the content node

Resource contentResource = resourceResolver.getResource("/content/forms/af/sandbox/abc.pdf");

如果要访问捆绑包中的/content/dam/data.json文件,将使用以下代码。 此代码假定您已经为/content/dam/节点上的“data”用户授予了读取权限

@Reference
GetResolver getResolver;
.
.
.
try {
   ResourceResolver serviceResolver = getResolver.getServiceResolver();

   // To get resource resolver specific to fd-service user. This is for Document Services
   ResourceResolver fdserviceResolver = getResolver.getFormsServiceResolver();

   Node resNode = getResolver.getServiceResolver().getResource("/content/dam/data.json").adaptTo(Node.class);
} catch(LoginException ex) {
   // Unable to get the service user, handle this exception as needed
} finally {
  // Always close all ResourceResolvers you open!

  if (serviceResolver != null( { serviceResolver.close(); }
  if (fdserviceResolver != null) { fdserviceResolver.close(); }
}

下面给出了实施的完整代码

package com.mergeandfuse.getserviceuserresolver.impl;
import java.util.HashMap;
import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import com.mergeandfuse.getserviceuserresolver.GetResolver;
@Component(service = GetResolver.class)
public class GetResolverImpl implements GetResolver {
        @Reference
        ResourceResolverFactory resolverFactory;

        @Override
        public ResourceResolver getServiceResolver() {
                System.out.println("#### Trying to get service resource resolver ....  in my bundle");
                HashMap < String, Object > param = new HashMap < String, Object > ();
                param.put(ResourceResolverFactory.SUBSERVICE, "getresourceresolver");
                ResourceResolver resolver = null;
                try {
                        resolver = resolverFactory.getServiceResourceResolver(param);
                } catch (LoginException e) {

                        System.out.println("Login Exception " + e.getMessage());
                }
                return resolver;

        }

        @Override
        public ResourceResolver getFormsServiceResolver() {

                System.out.println("#### Trying to get Resource Resolver for forms ....  in my bundle");
                HashMap < String, Object > param = new HashMap < String, Object > ();
                param.put(ResourceResolverFactory.SUBSERVICE, "getformsresourceresolver");
                ResourceResolver resolver = null;
                try {
                        resolver = resolverFactory.getServiceResourceResolver(param);
                } catch (LoginException e) {
                        System.out.println("Login Exception ");
                        System.out.println("The error message is " + e.getMessage());
                }
                return resolver;
        }

}
recommendation-more-help
8de24117-1378-413c-a581-01e660b7163e