Uwaga: mówię o wstrzykiwaniu mojego kodu do serwera SharePoint po stronie serwera (za pośrednictwem paczki/dodatku itp.) W przeciwieństwie do korzystania z usług Microsoft.SharePoint.dll
lub usług internetowych w celu uzyskania dostępu do SharePoint.Podłączanie do serwera SharePoint po stronie serwera
Mój problem polega na tym, że muszę dostosować sposób działania bibliotek dokumentów, w tym niestandardowego zarządzania uprawnieniami. Przeglądałem wewnętrzne elementy jego pracy. Oto moje obserwacje:
- zapewnia podstawową logikę zarządzania biblioteką dokumentów. Jednak samo w sobie nie jest to
WebPart
. - Rzeczywiste renderowanie części WWW dla biblioteki dokumentów prawdopodobnie jest obsługiwane przez
ListViewWebPart
lub klasę pochodną. - W rzeczywistości istnieje klasa
SPPictureLibrary
, która zakłada, że możliwe jest dziedziczenie klasySPDocumentLibrary
w celu zapewnienia niestandardowego zachowania w bibliotece dokumentów. WebPartAdder.SiteWebPartGalleryProvider
w pewien sposób łączySPDocumentLibrary
z metodąWebPart
wewnątrzMicrosoft.SharePoint.WebPartPages.WebPartAdder.AddSources
.
Teraz wszystko to jest po stronie klienta, nic z tego nie dzieje się na samym serwerze SharePoint (afaik). Jednak widzę metody przeciążać na SPSecurableObject
tym SPDocumentLibrary
/SPList
ręcznym, w szczególności:
CheckPermissions
GetUserEffectivePermissionInfo
GetUserEffectivePermissions
EffectiveBasePermissions
itp
Co ja naprawdę chcę robić to być w stanie zastąpić CheckPermissions
/EffectiveBasePermissions
na serwerze SharePoint na SPDocumentLibrary
, aby wprowadzić moją niestandardową logikę.
Chciałbym teraz skierować moje badania do bibliotek dll programu SharePoint i ich zrozumienia. Chciałbym jednak uzyskać opinię ekspercką na temat tego, czy jest to wykonalne/wskazane we właściwym kierunku. Znakiem rozpoznawczym Microsoft (szczególnie biorąc pod uwagę ASP.NET 2.0/ASP.NET MVC jako punkt odniesienia) jest struktura rozszerzająca/dostawca. Dostarczają doskonałych dostawców "rzeczy" po wyjęciu z pudełka, ale możesz tworzyć klasy, dziedzicząc/wdrażając coś, co zastąpi domyślnych dostawców. Tak:
- Czy mogę wstrzyknąć do serwera po stronie SharePoint. Moim idealnym rozwiązaniem byłoby utworzenie klasy pochodnej
SPDocumentLibrary
(po stronie serwera) i wstrzyknięcie jej tak, aby w dowolnej instancji tworzonej biblioteki dokumentów tworzony był mój obiekt klasy (zamiastSPDocumentLibrary
, zakładając, że jest to również serwer klasy. nadal muszą "odzwierciedlać" klasy po stronie serwera SharePoint). - Jeśli 1) jest nopes, czy mogę utworzyć niestandardową
WebPart
, aby używać biblioteki dokumentów programu SharePoint w sposób, który zapewnia jej natywną bibliotekę dokumentów, ale nadal pozwala mi używać klasy pochodnejSPDocumentLibrary
, gdy ta część sieci jest dostępna (proszę zauważyć, że cała moja dyskusja dotyczy serwera SharePoint, tj. mojego kodu wykonującego w przestrzeni adresowej SharePoint/proces w3wp). - Dlaczego w ogóle mamy logikę w
SPSite.EffectiveBasePermissions
.Mam na myśli to, że ma to być CSOM i powinno po prostu być odpowiedzialne za serializację/deserializację tego, co jest zwracane przez/wysyłane na serwer. Jednakże widzę skomplikowaną logikę w tej nadpisanej właściwości, która kręci się wokół wydawania zezwolenia. - Jeśli zarówno 1), jak i 2) nie jest opcją (dosłownie :)), czy mam jakąkolwiek opcję manipulowania skutecznymi uprawnieniami SharePoint podczas pracy w przestrzeni adresowej SharePoint, zanim SharePoint podejmie jakiekolwiek działania w oparciu o te uprawnienia.
Wiem, że to było długie pytanie, ale mam nadzieję, że dobrze przeprowadzam moje badania.
Czy rozważasz wdrożenie dostawcy niestandardowej roli? Może możesz zastosować niestandardowe roszczenia do biblioteki dokumentów, a następnie wstawić te niestandardowe roszczenia do działającej tożsamości. http://geekswithblogs.net/GinoAbraham/archive/2017/03/21/custom-role-claim-based-authentication-on-sharepoint-2013.aspx –