标签:blog http io os ar div sp 代码 log
try
{
SPSecurity.RunWithElevatedPrivileges(delegate() //用此方法模拟管理员账户运行此事件处理程序
{
SPWeb web = SPContext.Current.Web;
//此时用户为sharepoint\system
//Response.Write("用户为:" + web.CurrentUser);
web.AllowUnsafeUpdates = true;
//获取到要模拟的用户的token
SPUser user = web.EnsureUser("veekee\\user1");
SPUserToken token = user.UserToken;
//利用用户Token构造新的Site对象
SPSite siteWithUser = new SPSite(web.Url, token);
SPWeb webWidthUser = siteWithUser.RootWeb;
//此时用户为veekee\user1
//Response.Write("用户为:" + webWidthUser.CurrentUser);
webWidthUser.AllowUnsafeUpdates = true;
//利用veekee\user1 用户来添加纪录
SPList list = webWidthUser.Lists["test1"];
SPListItem item = list.AddItem();
item["Title"] = "11";
item.Update();
webWidthUser.Dispose();
siteWithUser.Dispose();
web.Dispose();
});
}
catch (Exception ex)
{
throw ex;
}
相关信息
在SharePoint模拟指定用户身份进行操作的代码:
string siteUrl = "http://ecpe-dev:82/sites/sjs" ;
//首先用管理员身份取到某个用户的Token
//应该用SPSecurity.RunWithElevatedPrivilege来提升权限.
SPSite site = new SPSite(siteUrl);
//此时用户为SHAREPOINT\system
Response.Write(site.RootWeb.CurrentUser);
//获取到要模拟的用户的token
SPUser user = site.RootWeb.SiteUsers["saicmotorlab\\user1"];
//利用用户Token构造新的Site对象
SPSite siteWithUser = new SPSite(siteUrl, user.UserToken);
SPWeb webWithUser = siteWithUser.RootWeb;
//此时用户为SAICMOTORLAB\user1
Response.Write( webWithUser.CurrentUser );
SPList listWithUser = webWithUser.Lists["simeList"];
//other code
以上代码可以用在需要采用指定用户权限操作的情况,如写个web服务,按照传入的用户名返回其有权查看的ListItem。
标签:blog http io os ar div sp 代码 log
原文地址:http://www.cnblogs.com/ruiling/p/3969651.html