5

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

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

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

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

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

4

4 回答 4

7

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

SPContext.Current.Web.CurrentUser.LoginName

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

于 2008-09-22T08:44:49.997 回答
1

非常感谢您的回答!

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

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

于 2008-09-25T05:09:30.987 回答
0

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

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

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

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

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

于 2008-09-22T01:59:41.000 回答
0

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

我不知道您使用的是哪种身份验证方案,但您可能需要考虑使用 Kerberos,因为我发现它可以通过允许委派和将凭据从应用程序传递到应用程序来使这些场景变得更容易或服务器到服务器。

于 2008-09-22T04:55:29.017 回答