Dieser Artikel führt Sie durch den Prozess der Erstellung eines Dienstbenutzers in AEM Forms
In früheren Versionen von Adobe Experience Manager (AEM) wurde der administrative Ressourcen-Resolver für die Backend-Verarbeitung verwendet, für die der Zugriff auf das Repository erforderlich war. Die Verwendung des administrativen Ressourcen-Resolvers wird in AEM 6.3 nicht mehr unterstützt. Stattdessen wird ein Systembenutzer mit spezifischen Berechtigungen im Repository verwendet.
Weitere Informationen zu Erstellen und Verwenden von Dienstbenutzern in AEM.
Dieser Artikel erläutert die Erstellung eines Systembenutzers und die Konfiguration der Eigenschaften des Benutzer-Mappers.
Navigieren Sie zu http://localhost:4502/crx/explorer/index.jsp
Als "Administrator"anmelden
Klicken Sie auf "Benutzerverwaltung"
Klicken Sie auf " Systembenutzer erstellen "
Legen Sie den Benutzereridtyp auf "Daten"fest und klicken Sie auf das grüne Symbol, um die Erstellung des Systembenutzers abzuschließen.
Suchen Sie nach Apache Sling Service User Mapper Service und klicken Sie auf , um die Eigenschaften zu öffnen
Klicken Sie auf + Symbol (Plus) zum Hinzufügen der folgenden Dienstzuordnung
Klicken Sie auf Speichern .
In der obigen Konfiguration ist die Einstellung DevelopingWithServiceUser.core der symbolische Name des Bundles. getresourceresolver ist der Subdienstname.data ist der Systembenutzer, der im vorherigen Schritt erstellt wurde.
Wir können auch den Resource Resolver im Namen des fd-service-Benutzers erhalten. Dieser Dienstbenutzer wird für Document Services verwendet. Wenn Sie z. B. Nutzungsrechte zertifizieren/anwenden usw. möchten, verwenden wir den Ressourcen-Resolver des fd-service-Benutzers, um die Vorgänge auszuführen.
Laden Sie die mit diesem Artikel verknüpfte ZIP-Datei herunter und entpacken Sie sie.
Navigieren Sie zu http://localhost:4502/system/console/bundles
Laden Sie das OSGi-Bundle hoch und starten Sie es.
Stellen Sie sicher, dass das Bundle sich im aktiven Status befindet.
Sie haben jetzt erfolgreich eine Systembenutzer und bereitgestellt Service User Bundle.
Um Zugriff auf /content zu gewähren, erteilen Sie dem Systembenutzer (' data ') Leseberechtigungen für den Inhaltsknoten.
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");
Wenn Sie auf die Datei /content/dam/data.json in Ihrem Bundle zugreifen möchten, verwenden Sie den folgenden Code. Dieser Code setzt voraus, dass Sie dem Benutzer "data"im Knoten /content/dam/ Leseberechtigungen erteilt haben
@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(); }
}
Der vollständige Code der Implementierung ist unten aufgeführt.
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;
}
}