【问题标题】:Impersonate user programmatically on Sharepoint 2013 (C#)在 Sharepoint 2013 (C#) 上以编程方式模拟用户
【发布时间】:2015-03-25 08:11:51
【问题描述】:

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

非常感谢。

【问题讨论】:

    标签: c# sharepoint sharepoint-2013 impersonation spweb


    【解决方案1】:

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

    但是,您可以编写自定义代码以考虑您的需求,并向它们添加模拟逻辑(但这取决于您自己的实现,SP 不会在这方面为您提供帮助)。 Project Server 会执行您所要求的操作,但仅限于 Project Server 拥有的元素。

    【讨论】:

    • 如果你实现自己的安全令牌服务并让它在用户登录时说你的用户实际上是其他人,我可以看到它已经完成 - 虽然这不是我玩过的东西。 ..
    • 瓦卢!!这是我们已经实现的功能,我希望能够在 SharePoint 中实现同样的功能。您有开发和部署 Web 部件的经验吗?
    • 是的,我确实有这样的经历
    • 我可以参考一些建议。请参考:stackoverflow.com/questions/27851058/…
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      • 2011-03-22
      • 2015-10-27
      • 1970-01-01
      相关资源
      最近更新 更多