FormsAuthentication.GetRedirectUrl(String, Boolean) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
로그인 페이지로 리디렉션을 발생시킨 원래 요청에 대한 리디렉션 URL을 반환합니다.
public:
static System::String ^ GetRedirectUrl(System::String ^ userName, bool createPersistentCookie);
public static string GetRedirectUrl(string userName, bool createPersistentCookie);
static member GetRedirectUrl : string * bool -> string
Public Shared Function GetRedirectUrl (userName As String, createPersistentCookie As Boolean) As String
매개 변수
- userName
- String
인증된 사용자의 이름입니다.
- createPersistentCookie
- Boolean
이 매개 변수는 무시됩니다.
반환
리디렉션 URL을 포함하는 문자열이거나 null인 경우 userName null입니다.
예제
다음 코드 예제에서는 인증된 사용자를 메서드에서 반환된 URL로 리디렉션합니다 GetRedirectUrl .
중요합니다
이 예제에는 잠재적인 보안 위협인 사용자 입력을 허용하는 텍스트 상자가 포함되어 있습니다. 기본적으로 ASP.NET 웹 페이지는 사용자 입력에 스크립트 또는 HTML 요소가 포함되지 않는지 확인합니다. 자세한 내용은 스크립트 악용 개요를 참조하세요.
<%@ 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">
private void Login_Click(Object sender, EventArgs e)
{
// Create a custom FormsAuthenticationTicket containing
// application specific data for the user.
string username = UserNameTextBox.Text;
string password = UserPassTextBox.Text;
bool isPersistent = false;
if (Membership.ValidateUser(username, password))
{
string userData = "ApplicationSpecific data for this user.";
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
username,
DateTime.Now,
DateTime.Now.AddMinutes(30),
isPersistent,
userData,
FormsAuthentication.FormsCookiePath);
// Encrypt the ticket.
string encTicket = FormsAuthentication.Encrypt(ticket);
// Create the cookie.
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));
// Redirect back to original URL.
Response.Redirect(FormsAuthentication.GetRedirectUrl(username, isPersistent));
}
else
{
Msg.Text = "Login failed. Please check your user name and password and try again.";
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Forms Authentication Login</title>
</head>
<body>
<form id="form1" runat="server">
<span style="BACKGROUND: #80ff80; font-weight:bold">
Login Page
</span>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
<table border="0">
<tbody>
<tr>
<td>Username:</td>
<td><asp:TextBox id="UserNameTextBox" runat="server" /></td>
<td>
<asp:RequiredFieldValidator id="RequiredFieldValidator1"
runat="server" ErrorMessage="*"
Display="Static"
ControlToValidate="UserNameTextBox" />
</td>
</tr>
<tr>
<td>Password:</td>
<td><asp:TextBox id="UserPassTextBox" TextMode="Password" runat="server" /></td>
<td>
<asp:RequiredFieldValidator id="RequiredFieldValidator2"
runat="server" ErrorMessage="*"
Display="Static"
ControlToValidate="UserPassTextBox" />
</td>
</tr>
</tbody>
</table>
<input type="submit" value="Login" runat="server" onserverclick="Login_Click" />
</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">
Private Sub Login_Click(sender As Object, e As EventArgs)
' Create a custom FormsAuthenticationTicket containing
' application specific data for the user.
Dim username As String = UserNameTextBox.Text
Dim password As String = UserPassTextBox.Text
Dim isPersistent As Boolean = False
If Membership.ValidateUser(username, password) Then
Dim userData As String = "ApplicationSpecific data for this user."
Dim ticket As FormsAuthenticationTicket = New FormsAuthenticationTicket(1, _
username, _
DateTime.Now, _
DateTime.Now.AddMinutes(30), _
isPersistent, _
userData, _
FormsAuthentication.FormsCookiePath)
' Encrypt the ticket.
Dim encTicket As String = FormsAuthentication.Encrypt(ticket)
' Create the cookie.
Response.Cookies.Add(New HttpCookie(FormsAuthentication.FormsCookieName, encTicket))
' Redirect back to original URL.
Response.Redirect(FormsAuthentication.GetRedirectUrl(username, isPersistent))
Else
Msg.Text = "Login failed. Please check your user name and password and try again."
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Forms Authentication Login</title>
</head>
<body>
<form id="form1" runat="server">
<span style="BACKGROUND:#80ff80; font-weight:bold">
Login Page
</span>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
<table border="0">
<tbody>
<tr>
<td>Username:</td>
<td><asp:TextBox id="UserNameTextBox" runat="server" /></td>
<td>
<asp:RequiredFieldValidator id="RequiredFieldValidator1"
runat="server" ErrorMessage="*"
Display="Static"
ControlToValidate="UserNameTextBox" />
</td>
</tr>
<tr>
<td>Password:</td>
<td><asp:TextBox id="UserPassTextBox" TextMode="Password" runat="server" /></td>
<td>
<asp:RequiredFieldValidator id="RequiredFieldValidator2"
runat="server" ErrorMessage="*"
Display="Static"
ControlToValidate="UserPassTextBox" />
</td>
</tr>
</tbody>
</table>
<input type="submit" value="Login" runat="server" onserverclick="Login_Click" />
</form>
</body>
</html>
설명
메서드를 사용하는 대신 애플리케이션 코드에서 리디렉션을 수행하려는 경우 이 메서드를 RedirectFromLoginPage 사용할 수 있습니다.
메서드는 GetRedirectUrl 변수 이름을 사용하여 쿼리 문자열에 지정된 URL을 ReturnURL 반환합니다. 예를 들어 URL http://www.contoso.com/login.aspx?ReturnUrl=caller.aspx에서 메서드는 GetRedirectUrl 반환 URL caller.aspx을 반환합니다. 변수가 ReturnURL 없으면 메서드는 GetRedirectUrl 속성의 URL을 반환합니다 DefaultUrl .
ASP.NET 브라우저가 로그인 페이지로 리디렉션될 때 반환 URL을 자동으로 추가합니다.
기본적으로 변수는 ReturnUrl 현재 애플리케이션 내의 페이지를 참조해야 합니다. 다른 애플리케이션 또는 다른 서버의 페이지를 참조하는 경우 ReturnUrl 메서드는 GetRedirectUrl 속성의 URL을 DefaultUrl 반환합니다. 반환 URL이 현재 애플리케이션 외부의 페이지를 참조하도록 허용하려면 폼 구성 요소의 특성을 사용하도록 enableCrossAppRedirects 속성을 true 설정 EnableCrossAppRedirects 해야 합니다.
이 메서드는 쿠키를 만들지 않습니다.
중요합니다
EnableCrossAppRedirects 애플리케이션 간 리디렉션을 허용하도록 true 속성을 설정하는 것은 잠재적인 보안 위협입니다. 자세한 내용은 EnableCrossAppRedirects 속성을 참조하세요.