这可能是个奇怪的问题,但我想实现的功能是允许特定用户以不同的身份查看SharePoint页面。例如,我们有一个学生页面和一个工作人员页面。虽然我不是学生,但我想以学生的身份登录以便像学生一样查看学生页面。这样说是否清楚呢?换句话说,就是模拟身份。
我已经找到了一些模拟代码,并且它运行良好,但这并不是我想要的。我能够在单独的SPWeb对象中模拟用户,但是如何改变当前活动SPWeb对象的当前用户上下文呢?
这是我得到的代码:
非常感谢。
我已经找到了一些模拟代码,并且它运行良好,但这并不是我想要的。我能够在单独的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; }
}
非常感谢。