欢迎来到天天文库
浏览记录
ID:9689324
大小:52.00 KB
页数:2页
时间:2018-05-05
《moss模拟管理员权限》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、MOSS模拟管理员权限 今天做个小功能时,遇到个小问题。当用户在listA下添加一个item时,要对另外一个listB里的数据进行更新,而该用户对于listB只有读取权限,怎么办呢 于是翻书看看了,才发现原来MOSS有中模拟管理员权限的方法〔SPSecurity.RunAdded(SPItemEventPropertiesproperties)2 {3 SP=properties.ListItem;56789 10 stringname=item[Name].ToString();11 intnum=int.Parse(item[People
2、].ToString());121314 SPSecurity.RunySite=neySite.Roots(list.DefaultVie[Name].ToString().Trim()==name)28 {29 ne[People]=int.Parse(ne[People].ToString())-num;30 }3132 ne.Update();33 }34 }35 }36 catch(Excepti
3、onex)37 {38 using(Streamentationdetailsomitted}); 可以提升代码的运行权限,实现模拟管理员身份的功能。 在Run等等对象)都是以当前网站登录用户权限运作的,即使是在RunySite=neySite.Roote);}}); 以上mySite.Roote返回的是管理员的登录帐号。 但是如果按之前所说使用SPContext:SPSecurity.Rune);});这时候即使在提升权限的范围内运行,得到的也是当前网站登录帐户名,而不是管理员登录帐号publicclassDemoHandler:SPItemEve
4、ntReceiver//继承SharePoint数据条目事件监控类{ publicoverridevoidItemAdded(SPItemEventPropertiesproperties) //重载ItemAdded函数,监控新建列表条目事件 { SPSecurity.RunWithElevatedPrivileges(delegate() //12下一页——..,。用此方法模拟管理员账户运行此事件处理程序 { using(SPSitesite=neitem=list.Items.GetItemById(properties.ListItemId); //
5、获得触发事件的列表条目 if(!item.HasUniqueRoleAssignments)item.BreakRoleInheritance(false); //将此条目取消权限继承,如果是false,则将去除所有权限,只保留系统账户,如果是true,则将上一级权限复制过来。 SPUseruser=entra=neent(e)); //生成一个新的角色分配 ra.RoleDefinitionBindings.Add(.RoleAssignments.Add(ra); //将此新权限绑定到列表条目上
6、} catch(Exceptionee) { } } } } ); }}上一页12——..,。
此文档下载收益归作者所有