【问题标题】:Displaying the current authenticated Sharepoint user from an asp.net Page Viewer Web Part从 asp.net 页面查看器 Web 部件显示当前经过身份验证的 Sharepoint 用户
【发布时间】:2010-09-11 21:16:20
【问题描述】:

我正在创建一个独立的 asp.net 页面,该页面需要使用页面查看器 Web 部件嵌入到共享点站点中。 asp.net 页面发布到不同端口上的同一服务器,为我提供了要嵌入的 URL。

要求是在使用 Sharepoint 身份验证对用户进行身份验证后,他们导航到包含 asp.net Web 部件的页面以获取更多选项。

我需要在这个 asp.net 页面上做的是查询 Sharepoint 以获取当前经过身份验证的用户名,然后从 asp.net 代码在页面上显示它。

当我从 VS 调试应用程序时,这一切都很好,但是当通过 Sharepoint 发布和显示时,我总是得到 NULL 作为用户。

我们将不胜感激任何有关使其发挥作用的最佳方式的建议。

【问题讨论】:

    标签: asp.net sharepoint authentication web-parts


    【解决方案1】:

    如果要从 SharePoint 上下文中检索当前已通过身份验证的用户,则需要保留在 SharePoint 上下文中。这意味着在 SharePoint 中托管您的自定义 Web 应用程序(请参阅http://msdn.microsoft.com/en-us/library/cc297200.aspx)。然后从您的自定义应用程序中引用 Microsoft.SharePoint 并使用 SPContext 对象检索用户名。例如:

    SPContext.Current.Web.CurrentUser.LoginName
    

    您仍然可以使用页面查看器 Web 部件来引用网站的 URL,现在位于 SharePoint 上下文中。

    【讨论】:

      【解决方案2】:

      非常感谢您的回答!

      事实证明,只要 asp.net 页面使用与 Sharepoint 站点相同的 URL 和端口,身份验证就可以跨两个站点进行。

      解决方案是使用共享点站点内的虚拟目录并在那里安装 asp.net 页面。

      【讨论】:

        【解决方案3】:

        当它在调试中工作时,是否在 SharePoint 中使用?

        就身份验证而言,您的页面和 Sharepoint 站点也可能位于不同的服务器上——为了获取信息,如果可以,您可能需要通过 Web 部件的 QueryString 传递它——或者您可能需要制作您自己的 webpart 来执行此操作(只需将 IFRAME 放入部分中,并将 src 设置为您的页面,并使用 QueryString 传递用户名)。

        如果您将名称用于任何内容,这似乎确实是一个安全问题 - 如果您只是显示它,那么它可能没问题。

        如果您确实需要进行身份验证,您可能需要将身份验证添加到托管您的独立页面的网站的 web.config 中。

        编辑:我认为将页面放在与 SharePoint 相同的端口和服务器上会更好。

        【讨论】:

          【解决方案4】:

          我怀疑您将很难专门向 SharePoint 查询当前经过身份验证的用户名。我想不出一种方法可以像您描述的那样从单独的 Web 应用程序轻松访问 SharePoint 上下文。

          我不知道您使用的是哪种身份验证方案,但您可能想考虑使用 Kerberos,因为我发现它可以通过允许委派和传递来自应用程序到应用程序或服务器到服务器。

          【讨论】:

            猜你喜欢
            • 2012-03-11
            • 2019-08-29
            • 2022-01-04
            • 2017-06-28
            • 1970-01-01
            • 2015-06-21
            • 2017-09-21
            • 2018-06-12
            • 2021-03-23
            相关资源
            最近更新 更多