REST APIおよびユーザー情報リストの許可とBreeze.js
-
30-09-2020 - |
質問
サイトコレクション管理者ではないユーザーは、使用する際に問題なくユーザー情報リストから読むことができます http://server.domain.com/_vti_bin_/ListData.svc/UserInformationList
しかし、これらのユーザーはそれを介してアクセスするときに404エラーを取得します http://server.domain.com/_api/web/lists/getbytitle('User Information List')
. 。サイトコレクション管理者は404エラーを受け取りません。なぜこれがなぜそうなのか、そしてこの特定のエンドポイントのために回避されているかどうかを誰かが知っているでしょうか?
私は使えることを知っています _api/web/siteusers
しかし、これは、Breeze.jsのSharePointアダプターを使用する場合、実際には、リストのタイトルを指定することを期待しているため、データのコンテキストで一貫性を保ちようとしているため、これはあまり好ましくありません。
編集: 実際に siteusers
End Pointは同じデータを提供しません。実際にはサブセットのみがあります。回避策として私がやったことは私のものを修正することでした datacontext
使用するオブジェクト $http
と ListData.svc
風を使うのではなく。私はユーザーデータを変更していないので、最終的にはそれほど大したことではありませんが、これを行うためのより良い方法を理解したいと思います。 ListData.svc
非推奨です。
解決
私は考えます _vti_bin/ListData.svc
と _vti_bin/client.svc
(_api
)エンドポイントには、許可チェックのための異なるロジックがあります。
私はあなたの問題を再現することができます。サイト管理者としてログインしている間、私はリストにアクセスできますが、通常のユーザーとしてではありません。
_api/web/lists/getbytitle('User Information List')
結果で私が見つけたのは、その隠されたリストへの新しい(3番目の)リンクです。
_api/web/SiteUserInfoList/
このリンクを使用すると、非サイトアドミンは同じ情報にアクセスできます。私はあなたがあなたのためにそのリストへの統一されたアクセスを望んでいたことを知っています。しかし、おそらく、これは古いListData.SVCエンドポイントに戻る必要がないことなく回避策になる可能性があります。