我正在尝试查找我的sharepoint应用程序的当前用户名。如何做到这一点还有更多的方法。但是,sharepoint方式会返回误导性的价值。
System.Security.Principal.WindowsIdentity.GetCurrent().Name // returns MY_COMPUTER\\my_user
HttpContext.Current.User.Identity.Name // returns MY_COMPUTER\\my_user
HttpContext.Current.Request.ServerVariables["AUTH_USER"] // returns MY_COMPUTER\\my_user
Microsoft.SharePoint.SPContext.Current.Web.CurrentUser.LoginName // returns SHAREPOINT\\system
这种行为的原因是什么?如果我使用非sharepoint方式,我会遇到问题吗?
答案 0 :(得分:6)
您是否以用于安装系统的管理员帐户进行浏览? SharePoint将“帮助”重命名SHAREPOINT \ System。使用其他帐户,所有方法都将返回相同的值。
答案 1 :(得分:5)
如果用户是运行当前Web应用程序的应用程序池帐户,则会出现这种情况 顺便说一句,它应该与欢迎控件(左上角控件)中显示的名称相同
答案 2 :(得分:4)
问题是因为您可能从RunWithElevatedPrivileges代码中的提升的SPWeb获取当前用户。您可以使用下面的代码段来获取真实用户
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
}
}
});
这将显示真实的用户名,而不是SHAREPOINT \ System用户。
答案 3 :(得分:1)
我认为您可能已在SPSecurity.RunWithElevatedPriviliges下包含此代码。检查一下。我不确定
答案 4 :(得分:0)
SPWeb.CurrentUser返回SHAREPOINT \ system的另一种方式是,如果Web被提升,虽然我不确定为什么SPContext.Current会被提升。您在哪种页面上看到此行为?