変な質問かもしれませんが、実現したいのは、特定のユーザーが別のユーザーとしてログインしているかのように SharePoint ページを表示できるようにする機能です。
Student ページと Staff ページがあるとします。私は学生ではありませんが、学生のように学生ページを表示できるようにログインしたいと考えています。それは理にかなっていますか?ある意味、擬人化。
偽装コードをいくつか見つけましたが、正常に動作しますが、それは私が望んでいるものではありません。別の 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; }
}
どうもありがとう。