У меня есть похожая настройка в моем текущем проекте, я немного ее изменил, чтобы придать больше смысла вашему вопросу, мы используем базовый класс для пользовательских веб-страниц, что-то вроде:
<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);
}
}
}