Displaying the current authenticated Sharepoint user from an asp.net Page Viewer Web Part

瘦欲@ 提交于 2019-12-03 10:10:44

问题


I am creating a standalone asp.net page that needs to be embedded into a sharepoint site using the Page Viewer Web Part. The asp.net page is published to the same server on a different port, giving me the URL to embed.

The requirement is that after a user is authenticated using Sharepoint authentication, they navigate to a page containing the asp.net web part for more options.

What I need to do from this asp.net page is query Sharepoint for the currently authenticated username, then display this on the page from the asp.net code.

This all works fine when I debug the application from VS, but when published and displayed though Sharepoint, I always get NULL as the user.

Any suggestions on the best way to get this to work would be much appreciated.


回答1:


If you want to retrieve the currently authenticated user from the SharePoint context, you need to remain within the SharePoint context. This means hosting your custom web application within SharePoint (see http://msdn.microsoft.com/en-us/library/cc297200.aspx). Then from your custom application reference Microsoft.SharePoint and use the SPContext object to retrieve the user name. For example:

SPContext.Current.Web.CurrentUser.LoginName

You can still use the Page Viewer Web Part to reference the URL of the site, now located within the SharePoint context.




回答2:


Thanks heaps for the answers!

Turns out that as long as the asp.net page is using the same URL and port as the Sharepoint site, authentication works across both sites.

The solution is to use a Virtual Directory inside of the sharepoint site and install the asp.net page there.




回答3:


When it works in debug, is that being used in SharePoint?

Your page and the Sharepoint site might as well be on different servers as far as authentication is concerned -- in order to get the information over you might need to pass it via the QueryString from the webpart if you can -- or you might need to make your own webpart to do this (just put an IFRAME in the part with the src set to your page with the QueryString passing the username).

It does seem that this would be a security issue if you use the name for anything though -- if you are just displaying it, then it's probably fine.

If you actually need to be authenticated, you might need to add authentication into the web.config of the site hosting your standalone page.

edit: I think you'd have better luck putting your page on the same port and server as SharePoint.




回答4:


I suspect you will have a hard time specifically querying SharePoint for the currently authenticated username. I can't think of a way to easily access the SharePoint context from a separate web application like you are describing.

I don't know what kind of authentication scheme you are using, but you may want to consider using Kerberos, as I've found that it can make these kinds of scenarios a little easier by allowing for delegation and passing credentials from application to application or server to server.



来源:https://stackoverflow.com/questions/112818/displaying-the-current-authenticated-sharepoint-user-from-an-asp-net-page-viewer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!