Олицетворять пользователя программно в 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.

Другие вопросы по тегам