SharePoint 中列表的用户组权限
来源:互联网 发布:生成器 python 编辑:程序博客网 时间:2024/06/05 09:30
我们的目的就是利用SharePoint 中列表的权限,列表中各记录根据自己的用户组权限,仅供各用户组所属用户访问。
1、在添加列表后,设置列表权限,把其它的用户组全部删除,只保留自己所需要的用户组。
2、使用VS2005 ,添加普通的类,引用C:/Program Files/Common Files/Microsoft Shared/Web Server Extensions/12/ISAPI/Microsoft.SharePoint.dll。继承SPItemEventReceiver类,重写AddedItem方法。
public override void ItemAdded(SPItemEventProperties properties)
{
SPSecurity.RunWithElevatedPrivileges(delegate() //用此方法模拟管理员账户运行此事件处理程序
{
using (SPSite site = new SPSite(properties.SiteId)) //用此方法的话就不用dispose()了
{
using (SPWeb web = site.OpenWeb(properties.OpenWeb().ID)) //注意获得web的方法!!!
{
try
{
SPList list = web.Lists[properties.ListId]; //获得触发事件的列表
//获得触发事件的列表条目
SPListItem item = list.Items.GetItemById(properties.ListItemId);
//将此条目取消权限继承,如果是“false”,则将去除所有权限,只保留系统账户,如果是“true”,则将上一级权限复制过来。
if (!item.HasUniqueRoleAssignments)
{
item.BreakRoleInheritance(false);
}
//权限定义
SPRoleDefinition RoleDefinition = web.RoleDefinitions.GetByType(SPRoleType.Contributor);
//获取用户所在组
string groupName = IsInGroup(web, properties.UserLoginName.Split(':')[1]);
writetxt(groupName +"ab");
SPMember mem = web.SiteGroups[groupName];
SPPrincipal sp = (SPPrincipal)mem;
SPRoleAssignment ra = new SPRoleAssignment(sp);
//将此角色分配绑定权限级别
ra.RoleDefinitionBindings.Add(RoleDefinition);
//将此新权限绑定到列表条目上
item.RoleAssignments.Add(ra);
item.Update();
}
catch (Exception ee)
{
writetxt(ee.ToString());
}
}
}
}
);
}
这个类必须是加密钥,利用VS2005命令提示行生成SNK文件,在工程文件AssemblyInfo.cs里面加上
[assembly: AssemblyDelaySign(false)] //是否要延迟签名 false:不延迟签名 true:延迟签名
[assembly: AssemblyKeyFile("roadlist.snk")] //密钥文件的路径
然后生成DLL文件,利用gacutil/I file.dll命令方式将DLL文件加入GAC。
然后建一个控制台程序,引用C:/Program Files/Common Files/Microsoft Shared/Web Server Extensions/12/ISAPI/Microsoft.SharePoint.dll。
在主程序中加入出境
//根据网站集的Url得到网站集对象
SPSite site = new SPSite("http://sharepointsever:60000");
SPList list = web.Lists["列表名称"];
string asmName = "2000EventHandler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=79be99334218e9f4";//程序集名称
string className = "_000EventHandler.DemoEventHandler";//程序集中的类名
list.EventReceivers.Add(SPEventReceiverType.ItemAdded, asmName, className);
此时如果不出错,就表示已经把这个自定义事件放到当前的列表中了。此时各自的用户组只能访问用户组中的记录了。
- SharePoint 中列表的用户组权限
- SharePoint 中列表的用户组权限
- SharePoint 列表权限控制
- cms中角色,权限,用户组的设计
- sharepoint中列表的使用
- Sharepoint列表项权限修改
- Linux 用户组,用户,ls详细列表,权限
- SharePoint 检查当前用户是否在某sharePoint用户组中
- 关于SharePoint 2007的用户组和用户
- 关于SharePoint 2007的用户组和用户
- 关于SharePoint 2007的用户组和用户
- 关于SharePoint 2007的用户组和用户
- linux 用户组的权限分配
- linux的用户组,文件权限
- sharepoint 2013 自定义列表eventhandle权限控制
- linux中用户、用户组与文件权限
- SharePoint中删除列表记录
- Sharepoint中为列表添加自定义的菜单项
- [c#]:如何在C#中读写INI文件(五)
- 在ADO.NET中使用事务保护数据的完整性(3)
- 微软首席架构师:PC时代结束 Web取而代之
- 使用VS.NET开发Web Services 简明教程
- 设计模式c#描述——装饰(Decorator)模式
- SharePoint 中列表的用户组权限
- C#中在应用程序和DLL使用消息
- 用异步方式解析域名
- 从数据集更新数据库
- VB.NET特性
- Sybase数据库连接问题
- 我国网民数达2.21亿人 居全球首位
- Dot Net的调试 - 2
- c#中的接口