从asp.net页面查看器Web部件显示当前经过身份验证的Sharepoint用户
我正在创建一个独立的asp.net页面,该页面需要使用Page Viewer Web部件嵌入到SharePoint网站中。 asp.net页面发布到同一服务器上的不同端口,这给了我要嵌入的URL。
要求是在使用Sharepoint身份验证对用户进行身份验证之后,他们将导航到包含asp.net Web部件的页面以获取更多选项。
我需要在此asp.net页面上执行的操作是查询Sharepoint以获取当前经过身份验证的用户名,然后通过asp.net代码在页面上显示此内容。
当我从VS调试应用程序时,这一切都很好,但是当通过Sharepoint发布和显示时,我总是以NULL身份获得用户。
任何有关使此功能生效的最佳方法的建议,将不胜感激。
解决方案
当它在调试中工作时,是否可以在SharePoint中使用它?
就身份验证而言,页面和Sharepoint站点可能也位于不同的服务器上-为了获得信息,我们可能需要通过Webpart通过QueryString传递信息-或者我们可能需要进行身份验证自己的webpart来执行此操作(只需在将src设置为页面的部分中放置一个IFRAME,并使用QueryString传递用户名)。
如果我们将名称用作任何名称,这似乎确实是一个安全问题-如果仅显示名称,则可能很好。
如果实际上需要进行身份验证,则可能需要将身份验证添加到承载独立页面的站点的web.config中。
编辑:我认为我们最好把页面放在与SharePoint相同的端口和服务器上。
我怀疑我们会特别费力地向SharePoint查询当前经过身份验证的用户名。我想不出一种方法,可以像我们描述的那样从单独的Web应用程序轻松访问SharePoint上下文。
我不知道我们使用的是哪种身份验证方案,但是我们可能要考虑使用Kerberos,因为我发现通过允许在应用程序之间传递和传递凭据,可以使这种情况变得更容易一些。或者服务器到服务器。
如果要从SharePoint上下文中检索当前经过身份验证的用户,则需要保留在SharePoint上下文中。这意味着在SharePoint中托管自定义Web应用程序(请参阅http://msdn.microsoft.com/zh-cn/library/cc297200.aspx)。然后从自定义应用程序中引用Microsoft.SharePoint并使用SPContext对象检索用户名。例如:
SPContext.Current.Web.CurrentUser.LoginName
我们仍然可以使用Page Viewer Web部件来引用网站的URL,该网站现在位于SharePoint上下文中。
感谢堆的答案!
事实证明,只要asp.net页使用的URL和端口与Sharepoint网站相同,身份验证就可以在这两个网站上进行。
解决方案是在共享点站点内部使用虚拟目录,然后在其中安装asp.net页面。