사용자가 "로그인"되었는지 확인하는 방법은 무엇입니까?


89

내 ASP.NET 응용 프로그램에서 아래 방법으로 양식 인증을 사용하고 있습니다.

FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, true);

사용자의 로그인 여부를 어떻게 확인합니까? 로그인 한 사용자의 사용자 이름을 어떻게 얻을 수 있습니까?

답변:


189

나는 올바른 것을 찾았습니다. 아래에 있습니다.

bool val1 = System.Web.HttpContext.Current.User.Identity.IsAuthenticated

편집하다

이 편집에 대한 크레딧은 댓글에서 이것을 제안한 @Gianpiero Caretti 에게 있습니다.

bool val1 = (System.Web.HttpContext.Current.User != null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated

35
더 안전한 코드를위한 약간의 수정 : bool val1 = (System.Web.HttpContext.Current.User! = null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated
Gianpiero

14
최신 버전의 C #에서는 User?.Identity.IsAuthenticated == true.
bradlis7

3
또는 User?.Identity.IsAuthenticated ?? false이지만 @ bradlis7의 코드는 아마도 읽기가 더 쉬울 것입니다.
Michael

13

가장 간단한 방법 :

if (Request.IsAuthenticated) ...

6
if (User.Identity.IsAuthenticated)
{
    Page.Title = "Home page for " + User.Identity.Name;
}
else
{
    Page.Title = "Home page for guest user.";
}

이 접근 방식에 많은 찬성 투표가 없다는 것을 알면이 접근 방식을 사용할 때주의해야 할 단점 / 문제가 있습니까? 나는 이것을 사용하기로 결정했고 지금까지 작동하는 것 같습니다.
pnizzle 19

상단이 대답을 투표로 거의 동일합니다하지만 우리는 여기에 네임 스페이스를 사용하지 않는
마이

6

그들이 인증되었는지 확인하는 가장 쉬운 방법 Request.User.IsAuthenticated은 (메모리에서)


1
"Request.LogonUserIdentity"클래스는 이러한 모든 메서드와 속성을 제공합니다. 팁 고마워.
BlueBird

1
@beardtwizzle이 없습니다. 이것은 Windows 계정이 로그인되었는지 여부를 보여줍니다. 쿠키가 제거 되더라도 윈도우 계정의 사용자 이름과 로그인을 볼 수 있습니다. 이것은 나를 위해 일했습니다. "bool val1 = System.Web.HttpContext.Current.User.Identity.IsAuthenticated"
BlueBird
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.