以编程方式在Sharepoint 2013上扮演用户(C#)

3
这可能是个奇怪的问题,但我想实现的功能是允许特定用户以不同的身份查看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个回答

0

虽然SharePoint允许您的代码在模拟用户的情况下与其交互,但它不支持让您像另一个用户一样浏览和查看内容。

但是,您可以编写自定义代码以考虑您的需求并向其中添加模拟逻辑(但这取决于您的实现方式,SP将不会在此方面帮助您)。Project Server在涉及Project Server所有元素时会执行类似于您所要求的操作。


如果您实现自己的安全令牌服务,并让它在用户登录时进行,以表明您的用户实际上是其他人,我认为这是可以做到的 - 不过我还没有尝试过这个... - Choggo
非常感谢!这是我们已经实现的一个功能,我希望能够在SharePoint中做同样的事情。您有开发和部署Web部件的经验吗? - Naner
是的,我有这样的经验。 - Choggo
我需要一些建议。请参考:https://dev59.com/BYbca4cB1Zd3GeqPZr10 - Naner

0
如果您的模拟代码在SharePoint的自定义.aspx页面后执行,您可以通过编程方式向页面添加xsltlistviewwebpart以在模拟上下文下显示一个或多个列表视图。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接