这可能是一个奇怪的问题,但我想要实现的是允许特定用户查看 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; }
}
非常感谢。