2008-10-28 7 views
0

Windows 인증이 필요한 사이트가 있습니다. 응용 프로그램이 Security.Primicipal에서 자격 증명을 얻으면 사용자가 인증을 받으면 내 로컬 환경의 내 자격 증명이 DB와 ​​사용자 기본 설정에 저장되어 있지 않은 것과 다릅니다. 얻다. 이 문제를 해결하기 위해 다음 해결 방법을 수행하고 있습니다.로컬 환경에서 HttpApplication.User.Identity.Name을 변경하는 방법은 무엇입니까?

#if DEBUG 
     var myUser = userBL.GetSingle(@"desiredDomain\otherUserName"); 
    #else 
     var myUser = userBL.GetSingle(HttpApplication.User.Identity.Name); 
    #endif 
     Session.Add("User",myUser); 

다른 방법보다는 사칭 또는 HttpApplication.User.Identity.Name이의 값을 변경하기 위해 위에서 언급 한 workaorund이는 내 코드를 매번 변경해야 beacuse 내가 저장소에 커밋이 필요하거나입니다

답변

1

userBL을 변경할 수는 있지만 사용자가 다른 도메인에 있음을 반영하여 데이터베이스 레코드를 변경하지 않는 이유는 무엇입니까? 나는 프로덕션 데이터베이스를 사용하지 않는다고 가정하고 있으므로 데이터베이스를 dev/test에 사용할 수있게 만드는 '살생'단계에 아무런 문제가 없어야합니다.

UPDATE Users 
SET 
    UserName = REPLACE(UserName, '\\ProductionDomain\', '\\DevDomain\') 
  1. 는 DEBUG # 만약 사용하는 이런 종류의 나쁜입니다. 누군가는 프로덕션 환경에서 디버그 버전의 코드를 합법적으로로드 할 수 있어야합니다. 모든 갑작스러운 로그인이 끊어집니다. 이러한 것들이 필요할 때 web.config에서보다 잘 제어됩니다.
  2. 개발자는 데이터베이스의 dev 복사본을 사용하여 작업해야합니다. 사본이 작성 될 때 데이터베이스의 일부 측면을 위생 처리하는 것이 일반적입니다. 때로는 개인 정보 보호 규정 (예 : 사용자의 실제 이름과 로그인을 모호하게 함)을 위함입니다.
0

Web.Config에서 가장을 사용하여 ID를 테스트 자격 증명으로 설정하는 방법을 살펴 보았습니까? 나는 당신이 "테스트"web.config 및 "프로덕션"web.config 있다고 가정합니다. 이 방법으로 당신이 살 때 그것을 제거하는 것에 대해 걱정할 필요가 없습니다.

+0

i 내 컴퓨터에서만 도달 할 수있는 도메인을 가장 할 수 있습니다. 그리고 이것은 외국 도메인 때문에 unfortnately이 솔루션은 나를 위해 일하지 않았다, 감사합니다 Logged –

0

저는 이것을 유틸리티 메소드에서 래핑하여이 작업을 수행했습니다. HttpContext.Current가 null이 아닌 경우 거기에서 가져옵니다. 그렇지 않으면 WindowsIdentity.GetCurrent()에서 가져옵니다.

관련 문제