ここで奇妙な状況があります。http get リクエストを MarkLogic サーバーに送信するアプリケーションを構築しようとしています。を実行する XQuery コードにヒットしますsearch:search("")
。デフォルトの関連する結果が返されるように、空のクエリを検索に渡しています。
また、展開には Roxy を使用しています。コマンドで典型的なRoxy展開関数を呼び出すと -
ml local deploy content.
すべてのドキュメントが読み込まれ、後で localhost:7040 にアクセスすると、期待どおりの結果が得られます。ここまでは順調ですね。
ここで、Roxy の既存のメソッド deploy_content をオーバーライドし、xdmp:document-load()
すべてのデータをコンテンツ データベースにロードする XQuery 関数を呼び出す新しいメソッドを定義します。ここにコードスニペットがあります -
declare function loadTS:load($path) {
let $result :=
for $d in xdmp:filesystem-directory($path)//dir:entry
let $log := xdmp:log(fn:concat("$d-->",xdmp:describe($d)))
return xdmp:document-load($d//dir:pathname,
<options xmlns="xdmp:document-load">
<uri>{fn:concat("/",$d//dir:filename)}</uri>
<permissions>{xdmp:default-permissions()}</permissions>
<format>xml</format>
<collections>
<collection>all</collection>
</collections>
</options>)
return $result
};
ここで、アプリケーションを実行すると 0 の結果が得られますが、クエリ コンソールからは同じコードが正常に機能します。roxy から新しく作成されたユーザーに管理者ロールを提供すると、期待どおりの結果が得られるため、これはロールと特権の概念に関連していると思います。後でアプリケーションを使用するデフォルトのユーザーに管理者ロールを提供したくありません。では、問題を解決するには、ロール、特権、および認証に関してどのような変更を行う必要がありますか?
注: localhost:7040 にアクセスしても、認証は求められません。
ml.app-role:xyz-role
このユーザーの役割の下にあるすべての既定のアクセス許可を取得する機能はありますか。
これは、よりバニラのインストールであるため、アプリサーバーに使用されるユーザーです。
クエリ コンソールに使用されるユーザーは admin です。
ロード ドキュメントの 1 つに対してコマンドを実行しましたxdmp:document-get-permissions()
が、空のシーケンスが返されました。
xdmp:document-get-permissions("/a-ha+Take-on-Me.xml")
.
authentication-method=アプリケーションレベル