2013-02-28 3 views
1

У меня есть проект, в котором у меня есть имя пользователя (но не пароль), и вам нужно проверить, может ли пользователь получить доступ к элементу. Это должно быть на уровне позиций, а не на веб-уровне, поскольку права не могут быть унаследованы.Проверьте, есть ли у пользователя доступ к элементу в SharePoint

Мне известно о SPWeb.CheckPermissions, но при условии, что он будет проверять только если пользователь может получить доступ к фактическому spweb.

Благодаря

== EDIT ==

я смог добиться этого, делая это

var item = properties.ListItem; 
SPUser user = SPContext.Current.Web.EnsureUser(@"domain\logonname"); 
item.DoesUserHavePermissions(user, SPBasePermissions.OpenItems); 

Мой вопрос остается немного, однако. Можно ли это сделать через веб-службу api?

+0

какая версия SharePoint вы используете? –

+0

2007, 2010, 2013 :) –

+0

Это не помогает, поскольку эти три имеют совершенно разные методы веб-сервиса. В какой системе вы нацеливаетесь? :) –

ответ

0

С помощью SharePoint 2013 вы можете использовать REST API для запроса статических методов. Интересным методом будет SPUtility.GetPrincipalsInGroup. Конечно, вы не можете просить «иметь открытое разрешение», но вы можете попросить определенную группу. Чтобы запросить статический метод, обратитесь к: Programming using the SharePoint 2013 REST service, ищите раздел Задание статических методов и свойств как URI службы REST. Конечно, вам нужно будет вызвать веб-службу с аутентифицированным пользователем, и группа должна быть включена, чтобы быть перечислимой всеми пользователями.