Олицетворять пользователя программно в Sharepoint 2013 (C#)
Это может быть странным вопросом, но я хотел бы добиться функциональности, которая позволила бы конкретным пользователям просматривать страницы SharePoint, как если бы они вошли в систему как разные пользователи.
Допустим, у нас есть страница студента и страница персонала. Я не студент, но я хотел бы войти в систему как один, чтобы иметь возможность просматривать страницу студента, как студент. Имеет ли это смысл? Так что, в некотором смысле, подражание.
Я нашел некоторый код подражания, и он отлично работает, но это не то, что я хочу. Мне удалось выдать себя за пользователя в отдельном объекте SPWeb. Но как мне изменить текущий пользовательский контекст активного объекта SPWeb?
Вот что у меня есть:
private void ImpersonateUser()
{
string siteURL = "http://mywebsite/";
SPSite parentSite = new SPSite(siteURL);
SPUserToken systemToken = parentSite.SystemAccount.UserToken;
using (SPSite site = new SPSite(siteURL, systemToken))
{
using (SPWeb web = site.OpenWeb())
{
web.AllowUnsafeUpdates = true;
OpenUserContext(web, siteURL, @"domain\studentuser");
}
}
}
private void OpenUserContext(SPWeb web, string siteURL, string user)
{
try
{
SPUser ensure = web.EnsureUser(user);
SPSite impSite = new SPSite(siteURL, ensure.UserToken);
SPWeb impWeb = impSite.OpenWeb();
// Do something as impersonated user
label1.Text = "Currently logged in as: " + impWeb.CurrentUser.ToString() + "(" + impWeb.CurrentUser.Name + ")";
}
catch (Exception ex) { label1.Text = ex.Message + "<br>" + user; }
}
Большое спасибо.
2 ответа
Если ваш код олицетворения выполняется за пользовательской страницей.aspx в SharePoint, вы можете программно добавить xsltlistviewwebpart на страницу, чтобы отобразить одно или несколько представлений списка в вашем олицетворенном контексте.
Хотя SharePoint позволяет вашему коду взаимодействовать с ним, выдавая себя за пользователя, у него нет поддержки, позволяющей вам просматривать и просматривать вещи, как если бы вы были другим пользователем.
Однако вы можете кодировать свои настройки, чтобы учесть ваше желание и добавить к ним логику олицетворения (но это зависит от вас, и SP не поможет вам в этом). Project Server делает что-то наподобие того, что вы просите, но только когда дело касается элементов, принадлежащих Project Server.