我目前正在开发一个sharepoint webpart来显示私人讨论区。讨论只能由受限用户查看。截至目前,以下允许用户可以是:网站集所有者,讨论板成员,讨论板所有者。
我设置webpart安全性的方法是让所有用户检查他们是否属于讨论板中的所述允许人员。
我的逻辑似乎现在正在运作,但我的客户关注的是: 如果将来他们将更改讨论板的设置或安全性,我可能不再需要修改webpart的代码,以便webpart的设置和安全性将同步到讨论板,该怎么办? 我现在的想法是,不是开发一个代码来复制讨论板的设置和安全性并将其应用到webpart,而是将webpart的设置和安全性直接指向讨论板。我现在的问题是,这可能吗?
请参阅随附的图片,以便更好地了解我想要发生的事情。
答案 0 :(得分:2)
Web部件应使用CheckPermissions方法
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splist.checkpermissions.aspx
SPContext.List.CheckPermissions(SPBasePermissions.EditListItems);
这样,您只能在列表中设置权限。
如果用户没有权限,则不显示任何内容,或显示“您没有权限”的消息
答案 1 :(得分: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投票给你! :)