4

Microsoft.SharePoint.dllSharePointにアクセスするために Web サービスを使用するのではなく、(パッケージ/アドインなどを介して) SharePoint サーバー側にコードを挿入することについて話していることに注意してください。

したがって、私の問題はこれです。カスタム権限管理を含め、ドキュメント ライブラリの動作をカスタマイズする必要があります。Microsoft.SharePoint.dll私はその動作の内部を分析して閲覧しています。ここに私の観察があります:

  1. SPDocumentLibraryドキュメント ライブラリを管理するコア ロジックを提供します。ただし、WebPartそれ自体ではありません。
  2. ドキュメント ライブラリの実際の Web パーツ レンダリングは、おそらく、ListViewWebPartまたは派生クラスによって処理されます。
  3. 実際には、クラスを継承してドキュメント ライブラリでカスタム動作を提供SPPictureLibraryできる可能性があると思わせるクラスがあります。SPDocumentLibrary
  4. WebPartAdder.SiteWebPartGalleryProvider何らかの方法でSPDocumentLibraryそのWebPart内部Microsoft.SharePoint.WebPartPages.WebPartAdder.AddSourcesメソッドに接続しています。

これはすべてクライアント側であり、SharePoint サーバー自体では発生しません (afaik)。ただし、SPSecurableObjectそのSPDocumentLibrary/SPListオーバーライドでオーバーライド可能なメソッドが表示されます。具体的には次のとおりです。

  1. CheckPermissions
  2. GetUserEffectivePermissionInfo
  3. GetUserEffectivePermissions
  4. EffectiveBasePermissionsなど

私が本当にやりたいことは、内部の SharePoint サーバーでCheckPermissions/をオーバーライドして、カスタム ロジックを挿入できるようにすることです。EffectiveBasePermissionsSPDocumentLibrary

ここで、調査を SharePoint サーバー側の dll に転用し、それらを理解します。しかし、これが実現可能かどうか、または正しい方向に向けられているかどうかについて、専門家の意見を聞きたいです。Microsoft の特徴 (特に ASP.NET 2.0 / ASP.NET MVC をベンチマークとして考慮する) は、拡張性 / プロバイダー フレームワークです。それらはすぐに使用できる「もの」の優れたプロバイダーを提供しますが、デフォルトのプロバイダーを置き換えるために何かを継承/実装することにより、クラスを作成できます。そう:

  1. SharePoint サーバー側に挿入できますか? 私の理想的な解決策は、SPDocumentLibrary派生クラス (サーバー側) を作成し、それを挿入して、Document ライブラリがインスタンス化されるたびに、クラス オブジェクトが作成されるようにすることです (代わりにSPDocumentLibrary、それがサーバー側のクラスであると仮定するのではなく、. SharePoint サーバー側クラスを "反映" します)。
  2. 1) がダメならWebPart、SharePoint ドキュメント ライブラリを使用するカスタムを作成して、ネイティブ ドキュメント ライブラリのように感じさせながら、SPDocumentLibraryその Web パーツにアクセスするときに派生クラスを使用できるようにすることはできますか (再度注意してください。私の議論はすべて、SharePoint サーバー側、つまり、SharePoint のアドレス空間/w3wp プロセス内で実行される私のコードに関するものです)。
  3. なぜ私たちはロジックを持っているSPSite.EffectiveBasePermissionsのですか?つまり、CSOM であると想定されており、サーバーから返される/サーバーに送信されるもののシリアル化/逆シリアル化を単に担当する必要があります。ただし、このオーバーライドされたプロパティには、アクセス許可の推測を中心に展開する精巧なロジックが見られます。
  4. 1) と 2) の両方がノーオペレーション (文字通り :)) である場合、SharePoint がそれらのアクセス許可に基づいて何らかのアクションを実行する前に、SharePoint のアドレス空間で操作しているときに SharePoint の有効なアクセス許可を操作するオプションはありますか?

私はそれが長い質問であることを知っていますが、うまくいけば私は自分の研究をうまくやっています.

4

1 に答える 1

2

SharePoint にはそのレベルのコントロールがないと思います。

SharePoint Events のオプションを検討したかどうかは不明です。独自のクラスを作成してロジックを追加するのではなく、ロジックを SharePoint イベントとして追加できます。関連するイベントをサブスクライブし、それに応じてロジックを追加できます。たとえば、カスタム ロジックに基づいて更新をキャンセルできます。ただし、基本的な許可ロジックをカスタマイズできるとは思いません。

SPList にはメソッド 'CheckPermissions' があり、このメソッドは基本クラス (SPSedirectionalObject) の 'CheckPermissions' を呼び出します。ただし、独自のサブクラスを作成し、関連するメソッドを上書きして、アクセス許可ロジックを引き継ぐことはできないと思います。これは、SharePoint の非常に重要な部分であり、カスタマイズするつもりはないと思います。

于 2017-10-22T01:45:56.037 に答える