Запретить доступ к пользовательским страницам веб-приложений пользователям, не являющимся администраторами, в SharePoint

StackOverflow https://stackoverflow.com/questions/1804163

Вопрос

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

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

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

Спасибо, Мэджиканди.

Обновить

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

Это было полезно?

Решение

У меня есть аналогичная настройка в моем текущем проекте, я немного изменил ее, чтобы придать больше смысла вашему вопросу, мы используем базовый класс для пользовательских веб-страниц, что-то вроде:

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);
        }
} }

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

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

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

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

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

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);
        }
    }
}

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top