Мне нужно определить сайты и веб-сайты, к которым указанный пользователь может получить доступ в веб-приложении SharePoint через SharePoint API. Обратите внимание, что указанный пользователь отличается от текущего пользователя, вызывающего код. Сначала я думал об использовании PortalSiteMapProvider, но он не предлагает возможности изменить пользовательский контекст, в котором он создан. Кто-нибудь может предложить этому альтернативу?

Спасибо, MagicAndi

0
MagicAndi 9 Окт 2009 в 14:38
2
Поймите, что вам нужно использовать API, но вы также можете увидеть инструмент разрешений в SP Administration Toolkit: blog.beckybertram.com/Lists/Posts/Post.aspx?ID=56
 – 
Alex Angas
9 Окт 2009 в 14:44
Также может быть полезен SharePoint SUSHI (открытый исходный код): codeplex.com/sushi
 – 
Alex Angas
9 Окт 2009 в 14:45

3 ответа

Лучший ответ

Не самое эффективное решение этой проблемы, но вы можете перебрать все коллекции сайтов / веб-сайты в веб-приложении, а затем вызвать:

web.DoesUserHavePermissions(userID, SPBasePermissions.Open)

Где «web» - это объект SPWeb, а userID - «DOMAIN \ user.name» пользователя, для которого вы проверяете права доступа. Сделайте это в RWEP и убедитесь, что вы правильно удаляете свои объекты SPSite / SPWeb.

1
Jacobs Data Solutions 20 Окт 2009 в 17:21

Вы можете использовать API веб-сервисов:

Определение роли пользователя на сайте / в рабочей области SharePoint с помощью API веб-сервисов

2
Community 23 Май 2017 в 15:19
1
Спасибо, ирландский повар, похоже, это один из возможных подходов, которые мы можем использовать. +1
 – 
MagicAndi
9 Окт 2009 в 19:12

Один из возможных подходов - использовать олицетворение для определения сайтов и веб-сайтов, к которым конкретный пользователь (кроме текущего) может получить доступ через PortalSiteMapProvider. Здесь описан способ олицетворения другого пользователя в контексте SharePoint:

http://blackninjasoftware.com/2009/04/09/how-to-programmatically-impersonate-users-in-sharepoint/

0
MagicAndi 19 Окт 2009 в 16:32