質問

ディスパッチャーモジュールのキャッシュ機能権限の許可を有効にするには?

構成

この機能には、追加のパッケージが必要です。これは、CQ の内部でディプロイされます(URL に応答し、正しい HTTP コードを返すサーブレットをコーディングする必要があります)。デプロイメント後に、ページにアクセスを許可されているかユーザーが、リクエストを処理されているかどうかを確認すします。/bin/permissioncheck.html?uri=<handle>キャッシュ権限の許可を有効にするには、次のセクションを dispatcher.any 設定ファイルのファームへ追加します。

# 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"
      }
    }
  }

サンプル設定では、html ページのみをチェックできます。

以下で CQ5 のチェックを実行するサンプルコードを示します。Dominik に感謝します:)

/**
* @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);
        }
    }
}

適用対象

ディスパッチャー4.0.2+ および CQ5.x

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー