1

我目前正在开发一个 sharepoint webpart 来显示一个私人讨论板。讨论只能由有限的用户查看。截至目前,以下允许的用户可能是:网站集所有者、讨论区成员、讨论区所有者。

我设置 webpart 安全性的方法是获取所有用户并检查他们是否属于讨论板上的上述允许人员。

我的逻辑现在似乎正在运行,但是,我的客户担心的是:如果将来他们会更改讨论板的设置或安全性,我可能不再需要修复 webpart 的代码,这样Webpart 的设置和安全性是否会同步到讨论区?到目前为止,我的想法是,与其开发将复制讨论板的设置和安全性并将其应用于 Web 部件的代码,我将直接将 Web 部件的设置和安全性指向讨论板。我现在的问题是,这可能吗?

请查看附图以更好地了解我想要发生的事情。

第一张图片

第二张图片

4

2 回答 2

2

Web 部件应使用 CheckPermissions 方法

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splist.checkpermissions.aspx

SPContext.List.CheckPermissions(SPBasePermissions.EditListItems);

这样您就可以只在列表上设置权限。

如果用户没有权限,则不显示任何内容或显示“您没有权限”的消息

于 2011-01-19T10:07:49.813 回答
0

嗨,我已经解决了这个问题!

这个词做了“DoesUserHavePermissions”的事情......这是我的代码片段

try
{
    string strListUrl = "http://MySite.com/List/MyDiscussion/AllItems.aspx";
    SPUser objCurrentUser = SPContext.Current.Web.CurrentUser;
    SPSite objSite = new SPSite(SPContext.Current.Web.Url);
    SPWeb objWeb = objSite.OpenWeb();
    SPList objList = objWeb.Lists[strListUrl];

    if(!objList.DoesUserHavePermissions(objCurrentUser,SPBasePermissions.EditListItems)){
        throw new UnauthorizedAccessException("You are not authorized to view this discussion!");
    }
}
catch(UnauthorizedAccessException uae){
    /// some exception handling codes here
}

@djeeg:感谢您的帮助!1票给你!:)

于 2011-01-19T11:22:54.850 回答