SPContext.Current.Web.CurrentUser returns misleading value

后端 未结 5 1722
没有蜡笔的小新
没有蜡笔的小新 2021-01-03 02:02

I\'m trying to find out current user name for my sharepoint application. There are more that one way how to do this. However the sharepoint way returns misleading value.

相关标签:
5条回答
  • 2021-01-03 02:28

    The problem is because you are probably getting the current user from an elevated SPWeb inside a RunWithElevatedPrivileges code. You can use the snippet below to get the real user

    SPWeb site = SPContext.Current.Web;
    SPSecurity.RunWithElevatedPrivileges(delegate()
    {
        using (SPSite ElevatedsiteColl = new SPSite(siteColl.ID))
       {
           using (SPWeb ElevatedSite = ElevatedsiteColl.OpenWeb(site.ID))
           {
                string currUser = site.CurrentUser; //not the ElevatedSite.CurrentUser
           }
       }
    });
    

    This will show the real user name instead of the SHAREPOINT\System user.

    0 讨论(0)
  • 2021-01-03 02:29

    This is expected if the user is the application pool account running the current web application.
    BTW, it's supposed to be the same name as displayed in the welcome control (upper left control)

    0 讨论(0)
  • 2021-01-03 02:32

    Are you browsing as the admin account that you used to install the system? SharePoint will "helpfully" rename that SHAREPOINT\System. Use a different account and all of the methods will return the same value.

    0 讨论(0)
  • 2021-01-03 02:42

    I think you might have include this code under SPSecurity.RunWithElevatedPriviliges. Check it out once. I am not sure though

    0 讨论(0)
  • 2021-01-03 02:51

    The other way SPWeb.CurrentUser could return SHAREPOINT\system is if the web is elevated, though I'm not sure why SPContext.Current would be elevated. On what kind of page are you seeing this behavior?

    0 讨论(0)
提交回复
热议问题