5

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

私の問題はこれです。ドキュメントライブラリがどのように動作するかをカスタム権限管理を含めてカスタマイズする必要があります。私はMicrosoft.SharePoint.dllを調べて、その作業の内部を分析しています。私の所見は次のとおりです。

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

これはすべてクライアント側であり、これはSharePointサーバー自体(afaik)では発生しません。私は本当に何をしたいのか

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

されています。しかし、私は、具体的SPSecurableObjectSPDocumentLibrary/SPListそのオーバーライド、上のオーバーライドメソッドを参照してください上書きできるようにするCheckPermissions/私のカスタムロジックを挿入するには、SharePointサーバー内のSPDocumentLibraryに0を入力します。

私は今、私の研究をSharePointサーバー側のdllに分けて理解しています。しかし、私はこれが実現可能であるか正しい方向に指摘されているかについて専門家の意見を得たいと思っています。 Microsoftの特質(ベンチマークとしてASP.NET 2.0/ASP.NET MVCを特に考慮)は、拡張性/プロバイダーフレームワークです。彼らはすぐに使える優れたプロバイダを提供しますが、デフォルトプロバイダを置き換えるものを継承/実装することによってクラスを作成できます。したがって:

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

長い質問がありましたが、うまくいけば私はよく研究しています。

+0

カスタムロールプロバイダの実装を検討しましたか?たぶん、いくつかのカスタムクレームをドキュメントライブラリに適用し、これらのカスタムクレームを実行中のIDに挿入することができます。 http://geekswithblogs.net/GinoAbraham/archive/2017/03/21/custom-role-claim-based-authentication-on-sharepoint-2013.aspx –

答えて

2

私はあなたがSharePointのコントロールのレベルを持っているとは思わない。

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

SPListには 'CheckPermissions'メソッドがあり、このメソッドは基本クラス(SPSecurableObject)の 'CheckPermissions'を呼び出します。しかし、私は、独自のサブクラスを作成し、関連するメソッドを上書きし、パーミッションロジックを引き継ぐことは可能であるとは思っていません。それは私がカスタマイズするつもりはないと思うSharePointにとって非常に重要なことです。

関連する問題