문제

ActivedivedirectoryMembershipprovider와 SQLProfileProvider가있는 ASP.NET 인트라넷 웹 사이트를 개발 중입니다.

내 웹 사이트의 요구 사항 중 하나는 "생일"페이지를 갖는 것입니다.이 페이지는 모든 프로필을 나열하고 생일 정보를 검색해야합니다.

다음과 같이 문제에 접근했습니다.

  • 멤버십을 호출하십시오 .getallusers () 정적 메소드;
  • 사용자 목록을 통해 반복하고 멤버의 사용자 이름에서 프로필을 검색합니다.

그러나이 접근법은 다음과 같은 이유로 실패했습니다.

  • WebApp은 현재 로그인 한 사용자를 가장하여 광고 세부 사항 (web.config에서 Idernity issersonate = "True")을 검색하고 있으므로 GetAllUsers를 호출하려고 할 때 "Access Is Donies"가 표시됩니다.
  • WebApp이 Super User 계정을 가장하려는 경우 AD는 사용자 이름을 사용자 이름@domain-name 형식으로 반환하지만 내 프로필 제공 업체에서는 처음에 Domain-Name username 형식으로 저장되었습니다.

그렇다면이 문제를 해결하기 위해 어떻게 조직의 구성원에 대한 프로파일 목록을 검색 하시겠습니까?

도움이 되었습니까?

해결책 2

a 메소드 getAllProfiles ()가있는 profileManager가 있습니다.

http://msdn.microsoft.com/en-us/library/system.web.profile.profilemanager.getallprofiles.aspx

다른 팁

전에는 한 번도 해본 적이 없지만, 당신은 2 차 사칭 컨텍스트를 만들려고 시도 할 수 있습니다. GetAllUsers 성공해야합니다.

살펴보십시오 http://chiragrdarji.blogspot.com/2007/03/impersonation-using-code.html,이 챕터는 사용하여 보안 컨텍스트의 변화를 달성 한 것으로 보입니다. System.Security.Principal.WindowsIdentity 함께 수업 System.Security.Principal.WindowsImpersonationContext. 체크 아웃 할 가치가있을 수 있습니다.

ProfileInfoCollection profiles = ProfileManager.GetAllProfiles(ProfileAuthenticationOption.All);
foreach (ProfileInfo pi in profiles)
{
    ProfileCommon p = Profile.GetProfile(pi.UserName);
    countries.Add(p.Country);        
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top