programing

HttpContext는 어떻게 처리합니까?현재의.사용자. 신원.어떤 사용자 이름이 존재하는지 알고 계십니까?

css3 2023. 8. 18. 22:48

HttpContext는 어떻게 처리합니까?현재의.사용자. 신원.어떤 사용자 이름이 존재하는지 알고 계십니까?

이것이 꼭 문제가 되는 것은 아닙니다. 단지 어떻게 작동하는지 궁금합니다.방법이 있습니다.

public static bool UserIsAuthenticated()
{
    bool isAuthed = false;
    try
    {
        if (HttpContext.Current.User.Identity.Name != null)
        {
            if (HttpContext.Current.User.Identity.Name.Length != 0)
            {
                FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity;
                FormsAuthenticationTicket ticket = id.Ticket;
                isAuthed = true;
                string MyUserData = ticket.UserData;
            }
        }
    }
    catch { } // not authed
    return isAuthed;
}

HttpContext.Current.User.Identity.Name아온다를 합니다.null사용자가 존재하지 않는 경우, 그러나 어떤 사용자 이름이 존재하거나 존재하지 않는지 어떻게 알 수 있습니까?

윈도우즈 인증의 경우

프로젝트를 선택합니다.

F4 키를 누릅니다.

"익명 인증" 사용 안 함 및 "Windows 인증" 사용

enter image description here

HttpContext입니다.현재의.사용자. 신원.이름이 null을 반환합니다.

이는 인증 모드가 web.config 파일에서 양식으로 설정되어 있는지 또는 Windows로 설정되어 있는지에 따라 달라집니다.

예를 들어, 인증을 다음과 같이 작성하면 다음과 같습니다.

<authentication mode="Forms"/>

그럼 인증모드="Forms", 사용자 이름에 대해 null을 받습니다.하지만 이렇게 인증 모드를 Windows로 변경하면 다음과 같습니다.

<authentication mode="Windows"/>

애플리케이션을 다시 실행하고 사용자 이름을 확인하면 사용자 이름을 성공적으로 얻을 수 있습니다.

자세한 내용은 시스템을 참조하십시오.Web.HttpContext.현재.사용자. 신원.이름 대 시스템.환경.ASP의 사용자 이름입니다.NET.

[HttpContext]는 어떻게 처리합니까?현재의.User] 존재하거나 존재하지 않는 사용자 이름을 알고 있습니까?

이것이 작동하는 한 가지 방법의 예를 살펴보겠습니다.양식 인증을 사용하고 있으며 "인증 시" 이벤트가 발생한다고 가정합니다.이 이벤트는 "응용 프로그램이 현재 요청을 인증할 때"(참조 소스) 발생합니다.

지금까지 응용프로그램은 사용자가 누구인지 전혀 알지 못합니다.

양식 인증확인을 사용 중이므로 먼저 인증확인 쿠키(일반적으로)를 구문 분석하여 확인합니다.전화를 통한 ASPAUTH)ExtractTicketFromCookie을 이전는라고 .FormsAuthentication.Decrypt(이 메소드는 공용이므로 직접 호출할 수 있습니다!)그 다음에, 그것은 전화합니다.Context.SetPrincipalNoDemand하여 쿠를사로전환에채기로 채우기Context.User(참조 소스).

"사용자"(또는 사용자)가 로그온해야 하는 네트워크 환경을 가정합니다.일반적으로 UID(사용자 ID)와 PW(비밀번호)입니다.좋아요, 그럼, 당신의 정체성은 무엇입니까, 아니면 당신은 누구입니까?사용자는 UID이며 로그온 세션에서 "이름"을 표시합니다.간단!또한 Best Buy 등과 같이 로그인이 필요한 인터넷 응용 프로그램에서도 작동해야 합니다.

사용해야 하는 웹 응용프로그램의 기본 페이지를 열 때 UID 또는 "이름"이 세션에서 제거됩니다.제 경우, 저는 도메인의 일부이므로 초기 Windows 인증을 사용할 수 있으며, 이 인증은 제가 누구인지 확인해야 하므로 코드의 두 번째 부분입니다.양식 인증의 경우 워크스테이션/컴퓨터로 전송되는 티켓(쿠키)에 의존합니다.코드는 다음과 같습니다.

string id = HttpContext.Current.User.Identity.Name;

// Strip the domain off of the result
id = id.Substring(id.LastIndexOf(@"\", StringComparison.InvariantCulture) + 1);

이제는 제 사업자 이름(일명 UID)이 있고 화면에 표시할 수 있습니다.

또한 확인합니다.

<modules>
      <remove name="FormsAuthentication"/>
</modules>

다음과 같은 내용이 발견되면 제거하십시오.

<remove name="FormsAuthentication"/>

web.config에서 줄을 서시면 됩니다. 제가 테스트해 봤습니다.

사실 그렇지 않아요!현재 로그인한 사용자의 사용자 이름만 저장됩니다.로그인 인증 후 로그인 인증 시스템에서 "HttpContext"에 사용자 이름이 자동으로 저장됩니다.현재의.사용자. 신원.이름" 속성입니다.

현재 사용자가 인증되었는지 확인하려면 보안상의 이유로 "HttpContext"를 선택해야 합니다.현재의.사용자. 신원.사용자 고유의 코드를 작성하는 대신 이 정보를 자동으로 저장하는 IsAuthenticated" 부울 속성입니다.

현재 사용자가 인증되지 않은 경우 "HttpContext.현재의.사용자. 신원.Name" 속성은 null이거나 빈 문자열이거나 "다른 값을 사용할 수 있습니다"(https://learn.microsoft.com/en-us/dotnet/api/system.security.principal.iidentity.name?view=netframework-4.8) 은 사용된 인증 모드에 따라 다릅니다.

참조: https://learn.microsoft.com/en-us/dotnet/api/system.security.principal.iidentity?view=netframework-4.8

Windows 인증은 로그인한 사용자에 대한 정보를 제공합니다.프로젝트에서 Windows 인증을 설정하는 방법은 다음과 같습니다.

메뉴 모음에서 프로젝트를 선택하고, 프로젝트 속성을 선택하고, 디버그를 선택한 후 아래 이미지와 같이 "Windows 인증 사용"을 선택할 수 있습니다.

enter image description here

그러면 모든 컨트롤러에서 이 코드를 실행하여 로그인한 사용자를 알 수 있습니다.

var strUserName = User;

에서 HTTP 요청을 할 때.NET 및 HttpContext 사용.현재의.사용자. 신원.현재 사용자의 이름을 검색하는 이름 속성. HTTP 요청에 특정 헤더가 전송되지 않습니다.

대신 사용자가 에 로그인할 때.NET 웹 애플리케이션, 인증 쿠키가 사용자의 브라우저에 설정되어 있습니다.이 쿠키는 웹 응용 프로그램을 검색하는 동안 사용자가 수행한 모든 후속 요청에 대해 전송됩니다.쿠키에는 서버에서 사용자의 ID를 확인하는 데 사용되는 사용자 이름 및 보안 토큰과 같은 인증 정보가 들어 있습니다.

HttpContext 때.현재의.사용자. 신원.이름 속성을 ,라고 합니다.NET은 쿠키에 저장된 인증 정보를 사용하여 현재 사용자를 식별하고 사용자의 이름을 검색합니다.HTTP 요청에서 이 정보를 검색하기 위해 특정 헤더를 보내지 않으며, 대신 사용자가 수행한 각 후속 요청에서 전송되는 인증 쿠키에 저장된 정보가 사용됩니다.

IIS 서버가 Windows 인증을 사용하도록 구성된 경우 사용자가 인증을 성공적으로 수행한 후 서버에서 인증 토큰이 자동으로 생성됩니다.

서버 생성 인증 토큰에 액세스하려면 HttpContext에 액세스할 수 있습니다.현재.서버의 User.Identity 속성입니다.ID 개체에는 사용자 이름 및 보안 역할과 같은 인증된 사용자에 대한 정보가 포함됩니다.

HTTP 요청의 경우, 인증 토큰은 인증 쿠키의 형태로 클라이언트에 자동으로 전송됩니다.클라이언트는 서버에 대한 후속 요청에 이 쿠키를 포함하여 신원을 인증할 수 있습니다.

Windows 인증을 사용하는 방법과 인증 토큰에 액세스하는 방법은 서버 구현 및 사용되는 개발 플랫폼에 따라 달라질 수 있습니다.따라서 자세한 내용은 해당 설명서를 참조하는 것이 좋습니다.

IIS 서버에서 사용 중인 Windows 인증 메커니즘을 정확히 확인하려면 다음 단계를 수행합니다.

  1. 서버에서 IIS(인터넷 정보 서비스) 관리자를 엽니다.
  2. 탐색 트리에서 확인할 웹 사이트를 선택합니다.
  3. 오른쪽 기능 패널에서 "인증" 아이콘을 누릅니다.
  4. 인증 공급자 목록에 웹 사이트에 대해 사용할 수 있는 Windows 인증 메커니즘 목록이 표시됩니다.

일반적으로 IIS에서는 기본 인증, NTLM 인증, Kerberos 인증, 통합 Windows 인증 등 다양한 Windows 인증 메커니즘을 사용할 수 있습니다.

서버에서 인증확인을 수행하는 방법에 대한 자세한 내용을 보려면 목록에서 Windows 인증확인 메커니즘 중 하나를 선택한 후 "편집"을 눌러 서버의 구성 및 작동에 대한 자세한 정보를 얻을 수 있습니다.IIS에서 윈도우즈 인증을 구성하고 사용하는 방법에 대해서도 마이크로소프트 설명서를 참조할 수 있습니다.

언급URL : https://stackoverflow.com/questions/21117617/how-does-httpcontext-current-user-identity-name-know-which-usernames-exist