Запретить доступ к пользовательским страницам веб-приложений пользователями без прав администратора в SharePoint - PullRequest
1 голос
/ 26 ноября 2009

У меня есть пользовательское веб-приложение, которое интегрируется с решением SharePoint (MOSS 2007). Я хотел бы добавить основанный на ролях доступ к страницам в этом пользовательском веб-приложении, чтобы к ним могли обращаться только пользователи из указанной группы SharePoint или с определенной ролью. Другие пользователи отправляются на веб-страницу OOTB по умолчанию с сообщением «Вы не авторизованы для просмотра этой страницы».

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

Обратите внимание, что эти страницы являются частью пользовательского веб-приложения и НЕ , созданных с помощью API или интерфейса SharePoint.

Спасибо, MagicAndi.

Обновление

Просто чтобы вы знали, я надеюсь на решение, в котором мы сможем использовать функциональные возможности SharePoint для расширения настроек безопасности или разрешений элементов для ограничения доступа к страницам пользовательских веб-приложений. У меня уже есть код для проверки SPGroup пользователя при загрузке страницы и для перенаправления, если требуется. Спасибо.

Ответы [ 3 ]

3 голосов
/ 07 декабря 2009

У меня есть похожая настройка в моем текущем проекте, я немного ее изменил, чтобы придать больше смысла вашему вопросу, мы используем базовый класс для пользовательских веб-страниц, что-то вроде: <pre> public abstract class WebPageBase : Page { public SPBasePermissions PagePermissionFlag; public override void OnInit(EventArgs e) { SPWeb web = SPContext.Current.Web; if(!web.DoesUserHavePermissions(PagePermissionFlag)) { // build the access denied page SPUtility.Redirect(SPUtility.AccessDeniedPage + "?Source=" + SPHttpUtility.UrlKeyValueEncode(web.Site.MakeFullUrl(Request.RawUrl)), SPRedirectFlags.RelativeToLayoutsPage, HttpContext.Current); }<br> } }

Тогда на самой странице определяется разрешение:

public class ContentPage : WebPageBase
{
    protected void Page_PreInit(Object sender, EventArgs e)
    {
        PagePermissionFlag = SPBasePermissions.ViewFormPages;
    }
}

Примечание: вы также можете установить это на:

<%@Page PagePermissionFlagString="SPBasePermissions.ViewFormPages"%> *
* вам нужно будет преобразовать строку в перечисление в WebPageBase)

Просто для справки, этот дополнительный бит не имеет отношения к реализации, описанной выше, это то, как мы используем его внутренне:

public static class CurrentUser
{
    public static bool IsAdmin
    {
        get
        {
            return SPContext.Current.Web.DoesUserHavePermissions(SPBasePermissions.ManageWeb);
        }
    }

    public static bool IsReader
    {
        get
        {
            return SPContext.Current.Web.DoesUserHavePermissions(SPBasePermissions.ViewFormPages);
        }
    }
}
1 голос
/ 26 ноября 2009

Вам нужно будет внедрить защиту ItemLevel для страниц. Перейдите в библиотеку страниц и выберите свойство «Страницы» и «Сказать элемент», разбейте в нем «Разрешение» и добавьте только пользователей, которым вы хотите предоставить доступ. В случае, если вы хотите добавить это в несколько файлов, вы можете сгруппировать их в отдельные папки и применить разрешение для этих папок в одиночку.

И когда кто-то пытается увидеть страницу, которую он не должен видеть, SharePoint автоматически отправляет ему страницу «Отказано в доступе».

Если вы применяете разрешение на уровне элементов на странице, SharePOint автоматически применяет настройки безопасности, чтобы можно было видеть только те страницы, к которым он имеет доступ, а не другие.

0 голосов
/ 05 декабря 2009

Взгляните на веб-службу пользователей и групп, предоставляемую Sharepoint. Ваше пользовательское веб-приложение может вызывать его методы для получения информации о текущем профиле пользователя.

Например, метод UserGroup.GetUserInfo () возвращает флаг IsSiteAdmin, который может ответить на ваш вопрос.

http://msdn.microsoft.com/en-us/library/ms774637.aspx

...