SharePoint 추가 된 HttpModule에서 현재 로그인 한 사용자 가져 오기
-
28-09-2020 - |
문제
추가 모듈에서 SharePoint에서 사용자가 로그인 한 사용자를 어떻게 얻을 수 있습니까?
다음 코드를 시도했지만 항상 시스템 계정을 얻습니다
SPUser user = null;
using (SPSite site = new SPSite(@"siteName"))
{
using (SPWeb web = site.OpenWeb())
{
user = web.CurrentUser;
}
}
//and
SPContext.Current.Web.CurrentUser
//and
public SPUser GetUserWithElevated()
{
SPUser user = null;
SPSecurity.CodeToRunElevated elevatedSubmit = new
SPSecurity.CodeToRunElevated(delegate
{
user = SPContext.Current.Web.CurrentUser;
});
SPSecurity.RunWithElevatedPrivileges(elevatedSubmit);
return user;
}
//this is my Httpmodule:
public void Init(HttpApplication context)
{
context.PreRequestHandlerExecute += new
EventHandler(context_PreRequestHandlerExecute);
}
void context_PreRequestHandlerExecute(object sender, EventArgs e)
{
Page page = HttpContext.Current.CurrentHandler as Page;
if (page != null)
{
// register handler for PreInit event
page.PreInit += new EventHandler(page_PreInit);
}
}
void page_PreInit(object sender, EventArgs e)
{ //user interception goes here}
. 해결책
이미 여기에 답변했습니다 :
Get "계정으로 작동하는 사용자의 현재 기록 된 사용자 이름"
또한 참고 사항 :
public SPUser GetUserWithElevated()
{
SPUser user = null;
SPSecurity.CodeToRunElevated elevatedSubmit = new
SPSecurity.CodeToRunElevated(delegate
{
user = SPContext.Current.Web.CurrentUser;
});
SPSecurity.RunWithElevatedPrivileges(elevatedSubmit);
return
}
.
시스템 계정에서 실행중인 경우)
또한 다른 답변의 해결책이 실현 될 때 작동하지 않는 경우 ... 귀하의 계정이 시스템 계정에서 실행 중이기 때문에 일 수 있습니다. SharePoint에 로그인 할 때 사용자 이름이 표시됩니까?
모듈 아래 에서이 작업이 필요합니다 :
HttpContext.Current.User.Identity.Name
.
SPContext 메서드를 시도하는 것보다 작동하지 않는 경우 :
SPContext.Current.Web.CurrentUser.LoginName
.
내가 말했듯이, 브라우저의 URL을 처음으로 사용하여 사용하는 계정이 시스템 계정으로 설정되지 않았는지 확인하십시오. RunWitheLevated PR는 시스템 계정으로 표시되는 App Pool 계정을 사용합니다! 제공 한 코드에서는 시스템 계정을 모두 제공하는 세 가지 방법이 있습니까?
더미 계정으로 테스트해야합니다. 현재 사용중인 계정이 아니라는 문제가 아니라
편집
Windows ID를 사용하여 사용자가 할 수있는 것보다 SharePoint로 사용자를 사용하는 경우,
string getCurrentWindowsUserName = WindowsIdentity.GetCurrent().Name;
.
http : // msdn. microsoft.com/en-us/library/vstudio/sfs49sw0(v=vs.100).aspx
다른 계정 유형을 반환하면 web.config에서 web.config에서 보유한 설정에 따라 다르므로 SharePoint Central Admin (System 계정으로 설정 계정으로 설정) :
http://msdn.microsoft.com/en-us/library. /aaa302377.aspx
편집
OK는 아래의 답을 기반으로 해당 코드가 올바른 가치를 지나가는 것으로 작동하고 있다고 말할 수 있습니다! 그것의 잘못된 장소는 두 곳에서 일어날 수 있습니다!
1) 중앙 관리를 GoTo 중앙 관리하고 WebApplication 사용자 정책을 확인하십시오. 사용자를 클릭하고 사용자가 알고있는 사용자 계정에서 시스템 계정이 체크인되지 않은지 확인하는지 확인하십시오.
동일한 문제가 표시되는 SharePoint 사이트에서 로컬 계정을 만들 수 있으므로 위의 강력한 느낌이 아닌가? 따라서이 추정을 기반으로 번호 2 ..
2) Goto IIS 관리자 -> 질문의 사이트 (사이트를 클릭하십시오) -> 고급 옵션을 클릭하십시오 -> 팝업이 나타납니다 -> "물리적 경로 자격 증명"이 비어 있습니다. ... 버튼 '...'을 클릭하면 팝업 -> 응용 프로그램 사용자가 확인되었는지 확인하고 확인을 클릭하십시오!
위의 위의 문제를 해결해야합니다!
다른 팁
다음을 시도하십시오 :
HttpContext.Current.User.Identity.Name
.