从asp.net页面查看器Web部件显示当前经过身份验证的Sharepoint用户

时间:2008-09-22 01:54:19

标签: asp.net sharepoint authentication web-parts

我正在创建一个独立的asp.net页面,需要使用Page Viewer Web Part嵌入到sharepoint站点中。 asp.net页面发布到不同端口上的同一服务器,为我提供了嵌入的URL。

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

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

当我从VS调试应用程序时,这一切都正常,但是当通过Sharepoint发布和显示时,我总是以用户身份获得NULL。

非常感谢任何有关实现这项工作的最佳方法的建议。

4 个答案:

答案 0 :(得分:7)

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

SPContext.Current.Web.CurrentUser.LoginName

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

答案 1 :(得分:1)

感谢大家的答案!

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

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

答案 2 :(得分:0)

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

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

如果您使用该名称,这似乎是一个安全问题 - 如果您只是显示它,那么它可能很好。

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

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

答案 3 :(得分:0)

我怀疑您将很难专门查询SharePoint以获取当前经过身份验证的用户名。我无法想象一种从您正在描述的单独Web应用程序轻松访问SharePoint上下文的方法。

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