另:我的那本《SPS2003开发指南》已经基本定由电子工业出版社出版,我的交稿时间会争取在春节之前,也就是约三个月后。没办法,工作比较忙,我又比较懒,辜负大家的期望了。大家觉得定价多少比较合适呢?:)
一、操作站点角色
核心类:
SPUser:表示一个站点用户(http://msdn.microsoft.com/library/en-us/spptsdk/html/tscSPUser.asp?frame=true)
SPUserCollection:表示包含多个用户的集合(http://msdn.microsoft.com/library/en-us/spptsdk/html/tscSPUserCollection.asp?frame=true)
SPRole:表示一个角色对象(http://msdn.microsoft.com/library/en-us/spptsdk/html/tscSPRole.asp?frame=true)
SPRoleCollection:表示包含多个角色的集合(http://msdn.microsoft.com/library/en-us/spptsdk/html/tscSPRoleCollection.asp?frame=true)
SPWeb(表示一个站点)包含一个Roles属性(SPRoleCollection类型),表示站点中所有的角色。SPRole包含一个Users属性(SPUserCollection类型),表示角色中所包含的所有用户。SPUser包含一个Roles属性(SPRoleCollection属性),表示用户所从属于的所有角色。
SPRole的Add()方法用于将某用户加入到自身这个角色中。RemoveUser()方法用于将某用户排除出自身这个角色。更改一个角色的信息后,调用Update()方法更新回数据源。
下面代码示例遍历当前站点下所有的角色,然后遍历每个角色中的所有用户。由于每个用户可从属于多个角色,所以输出的用户信息会有重复。
foreach(SPRole role in SPControl.GetContextWeb(HttpContext.Current).Roles)
{
Response.Write(“角色” + role.Name + “包含成员:”);
foreach(SPUser user in role.Users)
{
Response.Write(user.Name + “;”);
}
Response.Write(“<br>”);
}
二、操作文档库权限
核心类:
SPList:表示一个列表,文档库也是一个列表。(http://msdn.microsoft.com/library/en-us/spptsdk/html/tscSPList.asp?frame=true)
SPPermission:表示一项授权(http://msdn.microsoft.com/library/en-us/spptsdk/html/tscSPPermission.asp?frame=true)
SPPermissionCollection:表示包含多项授权的一个集合(http://msdn.microsoft.com/library/en-us/spptsdk/html/tscSPPermissionCollection.asp?frame=true)
SPRights:用来表示权限的枚举(http://msdn.microsoft.com/library/en-us/spptsdk/html/tsenSPRights.asp?frame=true)
SPList有一个Permissions属性(SPPermissionCollection类型),表示这个列表上所有的授权。每个SPPermission对应为一个被授权成员(可以是一个角色或一个用户)与某些权限。SPPermission的Member属性(SPMember类型,是SPUser和SPRole的父类)对应此项授权的被授权成员,PermissionMask属性(SPRights类型)对应此项授权的权限。
SPPermissionCollection的Add()方法用来增加一项授权,Remove()方法用来删除一项授权。
下面的代码示例遍历站点中的所有文档库,并查看用户“kaneboy”在每个文档库上有哪些权限,如果用户在某文档库上没有任何权限,则增加一项能查看文档库中文档的权限。
SPWeb web = SPControl.GetContextWeb(HttpContext.Current);
SPUser user = web.Users[“kaneboy”];
SPListCollection lists = web.GetListsOfType(SPBaseType.DocumentLibrary);
foreach(SPList list in lists)
{
Boolean bIncludeMember = false;
foreach(SPPermission perm in list.Permissions)
{
if (perm.Member.ID == user.ID)
{
bIncludeMember = true;
Response.Write(“在文档库” + list.Title + “上,用户” + user.Name + “的权限是:” + perm.PermissionMask.ToString() + “<br>”);
}
}
if (! bIncludeMember)
{
list.Permissions.Add(user, SPRights. ViewListItems);
}
}
打印 | 张贴于 2004-11-17 15:31:00 | Tag:SharePoint



留言反馈
-------------------------------------------------
kaneboy可否解释一下为什么装WSS/SPS之前没有问题,装了之后才出现这样的问题呢?WSS/SPS在什么地方做了限制?如果可以的话,请解释一下细节信息。谢谢!
Attempt to access the method failed
2005-2-27 22:16:31: Error: Error message: '未找到指定的服务器实例。请指定服务器地址和端口。' while installing Web Part package.
2005-2-27 22:16:31: Critical Error: Error while installing 'FlowLite' to server.
但服务器方面虚拟站点正常,请教一下可能是什么问题,感谢。
Request for the permission of type System.Security.Permissions.FileIOPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 failed.
at System.Security.CodeAccessSecurityEngine.CheckHelper(PermissionSet grantedSet, PermissionSet deniedSet, CodeAccessPermission demand, PermissionToken permToken) at System.Security.CodeAccessSecurityEngine.Check(PermissionToken permToken, CodeAccessPermission demand, StackCrawlMark& stackMark, Int32 checkFrames, Int32 unrestrictedOverride) at System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, StackCrawlMark& stackMark) at System.Security.CodeAccessPermission.Demand() at System.Web.HttpRequest.MapPath(String virtualPath, String baseVirtualDir, Boolean allowCrossAppMapping) at System.Web.HttpServerUtility.MapPath(String path) at Kaneboy.SharePoint.WebPartPages.FlowLite.FlowActionLoader.GetAllTypeNames() at Kaneboy.SharePoint.WebPartPages.FlowLite.ActionSelectToolPart.CreateHtmlSelect() at Kaneboy.SharePoint.WebPartPages.FlowLite.ActionSelectToolPart.RenderToolPart(HtmlTextWriter output)
请求 System.Security.Permissions.FileIOPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 类型的权限已失败。
at System.Security.CodeAccessSecurityEngine.CheckHelper(PermissionSet grantedSet, PermissionSet deniedSet, CodeAccessPermission demand, PermissionToken permToken) at System.Security.CodeAccessSecurityEngine.Check(PermissionToken permToken, CodeAccessPermission demand, StackCrawlMark& stackMark, Int32 checkFrames, Int32 unrestrictedOverride) at System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, StackCrawlMark& stackMark) at System.Security.CodeAccessPermission.Demand() at System.Web.HttpRequest.MapPath(String virtualPath, String baseVirtualDir, Boolean allowCrossAppMapping) at System.Web.HttpServerUtility.MapPath(String path) at Kaneboy.SharePoint.WebPartPages.FlowLite.FlowActionLoader.GetAllTypeNames() at Kaneboy.SharePoint.WebPartPages.FlowLite.ActionSelectToolPart.CreateHtmlSelect() at Kaneboy.SharePoint.WebPartPages.FlowLite.ActionSelectToolPart.RenderToolPart(HtmlTextWriter output)