我有一个与SharePoint(MOSS 2007)解决方案集成的自定义Web应用程序。我想在此自定义Web应用程序中添加基于角色的页面访问权限,只有指定SharePoint组中的用户或具有特定角色的用户才能访问它们。其他用户被发送到默认的OOTB网页,给出消息“您未被授权查看此页面”。

有人能指出我如何实现这一点的教程,以及如何控制每个自定义页面的访问权限?

请注意,这些网页是自定义网络应用程序的一部分,并且通过SharePoint API或界面 NOT 创建。

谢谢,MagicAndi。

<强>更新

为了让您了解,我希望有一个解决方案,我们可以利用SharePoint功能扩展安全修整或项目权限,以限制对自定义Web应用程序页面的访问。我已经有代码在页面加载时检查用户的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"%> *
上进行设置 *您必须将字符串转换为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);
        }
    }
}

其他提示

您必须对页面实施ItemLevel安全性。转到“页面库”并选择“页面属性”和“声明项目权限”,中断其中的“权限”,并仅添加要授予其访问权限的用户。如果要将其添加到多个文件,可以将它们分组到单独的文件夹中,并单独应用这些文件夹的权限。

当有人试图查看他不应该看到的页面时,SharePoint会自动发送“拒绝访问页面”。

如果您在页面上应用项目级别权限,则SharePOint会自动应用安全修整,以便只能看到他有权访问的页面而不是其他页面。

查看Sharepoint公开的用户和组Web服务。您的自定义Web应用程序可以调用其方法以获取有关当前用户配置文件的信息。

例如,UserGroup.GetUserInfo()方法返回IsSiteAdmin标志,该标志可以回答您的问题。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top