2016-04-20 7 views
0

Der Versuch, eine authentifizierte Seite mit Komponenten zu erstellen, die Daten über den authentifizierten Benutzer von einem Back-End-Dienst anfordern. Die Idee ist, dass die AuthN-Antwort aus dem Backend so leicht wie möglich sein soll (zB eine userID und authToken) und die Komponenten auf der Seite diese verwenden, um weitere Aufrufe zu tätigen, aber ich bin mir nicht sicher, der beste Weg um diesen Daten/Kontext für alle Komponenten auf der Seite für den Zugriff freizugeben.Wie teilen AEM 6.1-Komponenten Kontext/Daten für Anforderungen

Wie kann dieser Kontext am besten geteilt werden?

Antwort

0

Sie haben ein paar Optionen. Sie können Variablen in Komponenten festlegen, die über diese JSP hinaus gelten. Siehe http://www.java2s.com/Code/Java/JSTL/JSTLSetVariablesScope.htm

Mit Scoping können Sie Variablen über den Sitzungsumfang oder den Anforderungsumfang zugänglich machen, so dass alle anderen Komponenten, die während der gleichen Anfrage verarbeitet werden, auf die Variablen zugreifen können.

So könnten Sie Ihre Authentifizierungskomponente Variablen mit Anforderungsbereich für die userID und authToken setzen, und dann könnten nachfolgende Komponenten auf diese Variablen zugreifen und sie für ihre Bedürfnisse verwenden. Ein Beispiel zeigt https://stackoverflow.com/a/21352909/230055

+0

Was ist der beste Weg, wenn ein Dispatcher im Setup ist? Alle diese Seiten als nicht cachefähig machen? – Abhishek

+1

Ja, wenn Ihre Seiten auf benutzerspezifische Daten zugreifen, möchten Sie sie nicht zwischenspeichern. Sie können dies in der Dispatcher-Konfiguration angeben. Sie können auch 'response.setHeader (" Dispatcher "," no-cache ") hinzufügen;' serverseitig, um das Zwischenspeichern von Dispatcher zu verhindern. Oder Sie könnten die Seiten so umgestalten, dass AJAX-Aufrufe oder Personalisierungsfunktionen verwendet werden, um die benutzerspezifischen Teile (über clientseitiges JavaScript) abzurufen, während der Dispatcher die Teile, die für alle generisch sind, zwischenspeichert. – Shawn

+0

Bei Verwendung dieser Option, wie bei den Kommentaren im Beispiel, besteht eine Abhängigkeit von der Ladereihenfolge der Komponenten. Wenn es eine Container-Komponente mit anderen Komponenten gibt, kann man sicher sagen, dass der Container immer zuerst geladen wird, d. H. Die Variablen und den Bereich im Container für die anderen Komponenten festlegen, auf die zugegriffen werden soll? – daitienshi