zoukankan      html  css  js  c++  java
  • 操作SharePoint Object Model完成两项操作的文档

    下面的文档原本是我写给客户作为开发参考的,觉得应该也有不少朋友会觉得需要,所以贴出来。文档中说明了如何完成两种编程操作:管理站点中的角色和用户、管理文档库的权限授权。

    另:我的那本《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属性),表示用户所从属于的所有角色。

     

    SPRoleAdd()方法用于将某用户加入到自身这个角色中。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对应为一个被授权成员(可以是一个角色或一个用户)与某些权限。SPPermissionMember属性(SPMember类型,是SPUserSPRole的父类)对应此项授权的被授权成员,PermissionMask属性(SPRights类型)对应此项授权的权限。

     

    SPPermissionCollectionAdd()方法用来增加一项授权,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);

    }

    }

  • 相关阅读:
    [转]CTO谈豆瓣网和校内网技术架构变迁
    Hashtable Dictionary[必看]
    DotFuscator 小记
    博客园随笔添加自己的版权信息 [转]
    [转]关于支付宝API开发的一点心得
    .NET下实现分布式缓存系统Memcached
    4.9 利用对应的泛型替换Hashtable[转]
    dllhost.exe 解释
    C#命名规范,SqlServer命名规范
    用XenoCode 2006 加密dll(.NET
  • 原文地址:https://www.cnblogs.com/kaneboy/p/2436809.html
Copyright © 2011-2022 走看看