首页 > 代码库 > SharePoint如何模拟用户

SharePoint如何模拟用户

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。

 

SharePoint如何模拟用户