挂钩到SharePoint服务器端

r_h*_*ney 5 sharepoint sharepoint-2010 sharepoint-2013 sharepoint-online sharepoint-2016

请注意我说的是将我的代码注入SharePoint服务器端(通过包/加载项等),而不是使用Microsoft.SharePoint.dll或通过Web服务访问SharePoint.

所以我的问题是,我需要自定义文档库的工作方式,包括自定义权限管理.我一直在浏览Microsoft.SharePoint.dll分析其工作的内部情况.以下是我的观察:

  1. SPDocumentLibrary提供管理文档库的核心逻辑.但是,它WebPart本身并不是一个.
  2. 文档库的实际Web部件呈现可能由ListViewWebPart或派生类处理.
  3. 实际上有一个SPPictureLibrary类使我假设可以继承SPDocumentLibrary类以在Document库上提供自定义行为.
  4. WebPartAdder.SiteWebPartGalleryProvider在某种程度上连接SPDocumentLibrary到其WebPart内部Microsoft.SharePoint.WebPartPages.WebPartAdder.AddSources方法.

现在所有这些都是客户端,这一切都不会发生在SharePoint服务器本身(afaik)上.但是我在SPSecurableObject那个SPDocumentLibrary/ SPList覆盖上看到了可覆盖的方法,具体来说:

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

我真正想要做的是能够覆盖CheckPermissions/ EffectiveBasePermissionsSPDocumentLibrary内部SharePoint服务器上注入我的自定义逻辑.

我现在将我的研究转移到SharePoint服务器端dll并理解它们.但我希望得到一些关于这是否可行/指向正确方向的专家意见.Microsoft的标志(特别是考虑ASP.NET 2.0/ASP.NET MVC作为基准)是可扩展性/提供者框架.它们为开箱即用的"东西"提供了出色的提供程序,但您可以通过继承/实现某些东西来替换默认提供程序来创建类.所以:

  1. 我可以注入SharePoint服务器端吗?我理想的解决方案是创建一个SPDocumentLibrary派生类(服务器端),并将其注入,以便在实例化文档库时,我的类对象被创建(而不是SPDocumentLibrary假设它也是类服务器端.我仍然需要"反映"SharePoint服务器端类).
  2. 如果1)是nopes,我是否可以创建自定义WebPart以使用SharePoint文档库,使其具有本机文档库的感觉,但仍允许我在SPDocumentLibrary访问该Web部件时使用派生类(请再次注意,我所有的讨论都围绕着SharePoint服务器端,即我的代码在SharePoint的地址空间/ w3wp进程中执行.
  3. 为什么我们有逻辑SPSite.EffectiveBasePermissions可言.我的意思是它应该是CSOM,它应该只负责序列化/反序列化由/发送到服务器的内容.但是,我看到这个被覆盖的属性中的精细逻辑围绕着权限推断.
  4. 如果1)和2)都是无操作(字面意思:)),在SharePoint根据这些权限采取任何操作之前,在SharePoint的地址空间中操作时,是否有任何选项可以操纵SharePoint有效权限.

我知道这是一个很长的问题,但希望我能很好地完成我的研究.