Share via


FormsAuthentication.SignOut 메서드

정의

브라우저에서 폼 인증 티켓을 제거합니다.

public:
 static void SignOut();
public static void SignOut ();
static member SignOut : unit -> unit
Public Shared Sub SignOut ()

예제

다음 코드 예제에서는 메서드를 사용하여 양식 인증 쿠키를 SignOut 지우고 메서드를 사용하여 RedirectToLoginPage 사용자를 로그인 페이지로 리디렉션합니다.

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

public void LoginLink_OnClick(object sender, EventArgs args)
{
  FormsAuthentication.SignOut();
  FormsAuthentication.RedirectToLoginPage();
}

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>

<form id="form1" runat="server">
Welcome <b><%=User.Identity.Name%></b>. Not <b><%=User.Identity.Name%></b>? 
Click <asp:LinkButton id="LoginLink" Text="here" 
                      OnClick="LoginLink_OnClick" runat="server" />
to sign in.

<!-- Page Contents -->

</form>



</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

Public Sub LoginLink_OnClick(sender As Object, args As EventArgs)
  FormsAuthentication.SignOut()
  FormsAuthentication.RedirectToLoginPage()
End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>

<form id="form1" runat="server">
Welcome <b><%=User.Identity.Name%></b>. Not <b><%=User.Identity.Name%></b>? 
Click <asp:LinkButton id="LoginLink" Text="here" 
                      OnClick="LoginLink_OnClick" runat="server" />
to sign in.

<!-- Page Contents -->

</form>



</body>
</html>

설명

메서드는 SignOut 쿠키에서 양식 인증 티켓 정보를 제거하거나 이 인 경우 CookiesSupportedfalseURL을 제거합니다. 메서드와 함께 메서드를 SignOutRedirectToLoginPage 사용하여 한 사용자를 로그아웃하고 다른 사용자가 로그인하도록 허용할 수 있습니다.

쿠키 없는 모드에서만 실행하거나 인증된 사용자와 익명 사용자를 모두 지원하는 경우 익명 식별자를 제거한 결과로 특별한 비즈니스 논리를 실행해야 하는 경우 로그인 페이지로의 리디렉션을 명시적으로 제어해야 합니다.

경우는 SignOut 메서드를 호출 하 여 애플리케이션의 로그인 페이지로 이동 됩니다는 Redirect 메서드를 endResponse 매개 변수 설정 false. 리디렉션은 현재 페이지 실행이 완료될 때까지 수행되지 않으므로 추가 코드를 실행할 수 있습니다. 코드에 다른 페이지에 대 한 명시적 리디렉션이 없으면 사용자는 애플리케이션의 구성 파일에 구성 된 로그인 페이지로 리디렉션됩니다.

메서드를 호출하면 SignOut 양식 인증 쿠키만 제거됩니다. 웹 서버는 나중에 비교할 수 있는 유효하고 만료된 인증 티켓을 저장하지 않습니다. 이렇게 하면 악의적인 사용자가 유효한 양식 인증 쿠키를 가져오는 경우 사이트가 재생 공격에 취약해집니다. 양식 인증 쿠키를 사용할 때 보안을 강화하려면 다음을 수행해야 합니다.

  • 속성을 false로 설정하여 양식 인증 쿠키에 절대 만료를 SlidingExpiration 사용합니다. 이렇게 하면 하이재킹된 쿠키를 재생할 수 있는 창이 제한됩니다.

  • 속성을 true 로 설정하고 RequireSSL SSL에서 전체 웹 사이트를 실행하여 SSL(Secure Sockets Layer)을 통해서만 인증 쿠키를 발급하고 수락합니다. RequireSSL 속성을 true 로 설정하면 ASP.NET 비 SSL 연결을 통해 브라우저에 인증 쿠키를 보내지 않습니다. 그러나 클라이언트는 쿠키의 보안 설정을 준수하지 않을 수 있습니다. 즉, 클라이언트가 비 SSL 연결을 통해 양식 인증 쿠키를 전송할 수 있으므로 하이재킹에 취약합니다. SSL에서 전체 웹 사이트를 실행하여 클라이언트가 양식 인증 쿠키를 지우지 않도록 방지할 수 있습니다.

  • 서버에서 영구 스토리지를 사용 하 여 시 사용자가 웹 사이트에서 로그를 기록 하 고와 사용 하 여 애플리케이션 이벤트 같은 PostAuthenticateRequest 폼 인증을 사용 하 여 현재 사용자 인증 되었는지 여부를 결정 하는 이벤트입니다. 사용자가 폼 인증으로 인증되고 영구 스토리지에 있는 정보에 해당 사용자가 로그아웃되었음이 표시되면 인증 쿠키를 즉시 지우고 브라우저를 로그인 페이지로 다시 리디렉션하세요. 로그인에 성공하면 사용자가 로그인했음을 반영하도록 스토리지를 업데이트합니다. 이 메서드를 사용 하면 애플리케이션이 사용자의 로그인 상태를 추적 해야 하 고 유휴 사용자를 로그 아웃을 강제 적용 해야 합니다.

적용 대상

추가 정보