How to Programmatically Impersonate Users in SharePoint
Sometimes when creating SharePoint web or console applications, you may need to execute specific code blocks in another user's context.
Impersonating users in SharePoint will require a couple of things:
- the account that the web or console app uses has privileges to impersonate other users (typically this would be the system account)
- specific users' user tokens
Step 1: Log in as the system account, or get a handle to the system account in your code
|
string //we just need to get a handle to the site for us //to get the system account user token SPSite tempSite = new SPUserToken systoken = tempSite.SystemAccount.UserToken; using { using { //right now, logged in as Site System Account Console.WriteLine("Currently logged in as: " web.CurrentUser.ToString()); //add your code here } } |
Step 2: Before you impersonate, get the user token of the user you are switching to. For example:
|
//get this current user's user token SPUserToken userToken = web.AllUsers[user].UserToken; //create an SPSite object in the context of this user SPSite s = new SPWeb w = s.OpenWeb(); Console.WriteLine("Currently logged in as: " w.CurrentUser.ToString() + "(" ); |
Complete code follows:
|
private { string SPSite tempSite = new SPUserToken systoken = tempSite.SystemAccount.UserToken; using { using { //right now, logged in as Site System Account Console.WriteLine("Currently logged in as: " web.CurrentUser.ToString()); switchUser(web, siteStr, "BlackNinjaSoftware/MatthewCarriere"); switchUser(web, siteStr, "BlackNinjaSoftware/ShereenQumsieh"); switchUser(web, siteStr, "BlackNinjaSoftware/DonabelSantos"); } } } private { //impersonate somebody else SPUserToken userToken = web.AllUsers[user].UserToken; SPSite s = new SPWeb w = s.OpenWeb(); Console.WriteLine("Currently logged in as: " w.CurrentUser.ToString() + "(" ); } |
How to Programmatically Impersonate Users in SharePoint的更多相关文章
- Programmatically Disable Event Firing on List Item Update in SharePoint 2010
1. Microsoft.SharePoint.dll Create EventFiring.cs 1.Right-click on the project, select Add and click ...
- Creating a SharePoint Sequential Workflow
https://msdn.microsoft.com/en-us/library/office/hh824675(v=office.14).aspx Creating a SharePoint Seq ...
- Sharepoint学习笔记—习题系列--70-576习题解析 -(Q147-Q151)
Question 147 Your company has an existing SharePoint 2010 public-facing Web site. The Web site runs ...
- Sharepoint学习笔记—习题系列--70-576习题解析 -(Q144-Q146)
Question 144 You are planning a feature upgrade for a SharePoint 2010 farm. The original feature wi ...
- Sharepoint学习笔记—习题系列--70-576习题解析 -(Q112-Q115)
Question 112 You are designing a public-facing SharePoint 2010 Web site for an elementary school th ...
- Sharepoint学习笔记—习题系列--70-576习题解析 -(Q16-Q18)
Question 16 You are designing a SharePoint 2010 solution to manage statements of work. You need to d ...
- Sharepoint学习笔记—习题系列--70-576习题解析 -(Q59-Q62)
Question 59You are designing a collection of Web Parts that will be packaged into a SharePoint 2010 ...
- Sharepoint学习笔记—习题系列--70-576习题解析 -(Q75-Q77)
Question 75You are designing a feature for a SharePoint 2010 solution that will be activated by defa ...
- Sharepoint学习笔记—习题系列--70-576习题解析 -(Q78-Q80)
Question 78 You are designing an application configuration approach for a custom SharePoint 2010 app ...
随机推荐
- Windows 2008 R2 强制删除Cluster
在正常删除Cluster 节点之后,再添加节点时,报“节点已经加入群集”,无法加入,注册表信息删除后可正常移除Cluster服务,如下: HKEY_LOCAL_MACHINE\SYSTEM\Curre ...
- [2015.07.27]万峰图片批量处理专家 v8.6
万峰图片批量处理专家,界面简洁易用,功能强大实用.支持多种处理任务同时按顺序执行,真正的批量图片,批量效果处理.支持图片批量自定义的放大缩小,旋转或者翻转,支持图片格式批量转换.支持图片批量文字水印, ...
- mvc 中关于资源文件的扩展
namespace System.Web.Mvc { /// <summary> /// 扩展HtmlHelper /// </summary> public static c ...
- linux 内核源代码
https://www.kernel.org/ 源码地址 http://www.centos.org/download/ 系统地址 http://www.collab.net/downl ...
- Lab_2_SysOps_VPC_Linux_v2.5
System Operations - Lab 2: Configuring a Virtual Private Cloud with Amazon VPC - Linux - 2.5 ======= ...
- Oracle数据库自动增长列的实现过程
1.创建序列 -- Create sequence create sequence INNERID minvalue 1 maxvalue 99999999999999 start with 1 in ...
- 黄聪:远程连接mysql数据库注意事项记录(远程连接慢skip-name-resolve)
远程连接慢 慢是一个很大的问题,网上的办法是在my.ini的“[mysqld]”下面加入一行“skip-name-resolve”,就像这样: 然后保存并重启mysql服务即可. 下面是其它网友的补充 ...
- 从零到有的lex学习
最近总是在忙各种事情,毕业设计要求写一个基于云计算的java语法分析器.其实选题的时候就没有底,现在什么都不懂,只有从零开始.我与lex和yacc的缘分应该是在编译原理课程上,但是当时有很多门课,所以 ...
- [转]第1讲 什么是EMI滤波器
转:http://www.murata.com/zh-cn/products/emiconfun/emc/2010/10/28/en-20101028-p1 <前言> EMI是Electr ...
- Gson的使用
GSON:是Google开发的Java API,用于转换Java对象和Json对象 <dependency> <groupId>com.google.code.gson< ...