代码之家  ›  专栏  ›  技术社区  ›  Tangiest

禁止非管理员用户访问SharePoint中的自定义Web应用程序页

  •  1
  • Tangiest  · 技术社区  · 16 年前

    我有一个与SharePoint(Moss 2007)解决方案集成的自定义Web应用程序。我想添加对此自定义Web应用程序中网页的基于角色的访问权限,只有指定SharePoint组中的用户或具有特定角色的用户才能访问这些网页。其他用户被发送到默认的OOTB网页,并显示消息“您无权查看此网页”。

    有人能给我指一些关于如何实现这一点以及如何控制每个自定义页面的访问的教程吗?

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

    谢谢,魔术师。

    更新

    为了让您知道,我希望有一个解决方案,我们可以利用SharePoint功能来扩展安全修整或项目权限,以限制对自定义Web应用程序页的访问。我已经有代码在页面加载时检查用户的spgroup,并在需要时重定向。谢谢。

    3 回复  |  直到 16 年前
        1
  •  3
  •   Francisco Aquino    16 年前

    我在我当前的项目中有一个类似的设置,我对它做了一些修改以使您的问题更合理,我们为自定义网页使用了一个基类,如下所示:

    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);
            }
        }
    }
        2
  •  1
  •   Kusek    16 年前

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

    当一些人试图看到他不应该看到的页面时,SharePoint会自动向他发送拒绝访问页面。

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

        3
  •  0
  •   Leonidius    16 年前

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

    例如,usergroup.getuserinfo()方法返回issiteadmin标志,该标志可以回答您的问题。

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