Frage

Wie aktivieren Sie das berechtigungsabhängige Caching des Disponentenmoduls?

Konfiguration

Diese Funktion erfordert ein zusätzliches Paket, das innerhalb von CQ bereitgestellt wird (Sie müssen ein Servlet codieren, das auf die URL reagiert und den korrekten HTTP-Code zurückgibt). Nach dem Deployment wird überprüft, ob ein Benutzer auf eine Seite zugreifen darf, indem /bin/permissioncheck.html?uri=<handle> angefordert wird. Um das berechtigungsabhängige Caching zu aktivieren, fügen Sie den folgenden Abschnitt in der Konfigurationsdatei dispatcher.any zu Ihrer Datei hinzu:

# Authorization checker: before a page in the cache is delivered, a HEAD
# request is sent to the URL specified in 'url' with the query string
# '?uri=<page>'. If the response status is 200 (OK), the page is returned
# from the cache. Otherwise, the request is forwarded to the render and
# its response returned.
/auth_checker
  {
  # request is sent to this URL with '?uri=<page>' appended
  /url "/bin/permissioncheck.html"
      
  # only the requested pages matching the filter section below are checked,
  # all other pages get delivered unchecked
  /filter
    {
    /0000
      {
      /glob "*"
      /type "deny"
      }
    /0001
      {
      /glob "*.html"
      /type "allow"
      }
    }
  # any header line returned from the auth_checker's HEAD request matching
  # the section below will be returned as well
  /headers
    {
    /0000
      {
      /glob "*"
      /type "deny"
      }
    /0001
      {
      /glob "Set-Cookie:*"
      /type "allow"
      }
    }
  }

Die Beispielkonfiguration ermöglicht nur die Überprüfung auf HTML-Seiten.

Nachfolgend einige Beispielcodes, die den Check für CQ5 implementieren

/**
* @scr.component metatype="false"
* @scr.service
* @scr.property name="sling.servlet.paths" value="/bin/permissioncheck"
*
*/
public class PermissionHeadServlet extends SlingSafeMethodsServlet {

    private static final Logger log = LoggerFactory.getLogger(PermissionHeadServlet.class);

    public void doHead(SlingHttpServletRequest request, SlingHttpServletResponse response) {
        String uri = request.getParameter("uri");
        Resource test = request.getResourceResolver().getResource(uri);
        if (test != null) {
            response.setStatus(SlingHttpServletResponse.SC_OK);
        } else {
            response.setStatus(SlingHttpServletResponse.SC_UNAUTHORIZED);
        }
    }
}

Gilt für

Dispatcher 4.0.2+ und CQ5.x

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie