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이 들어 있는 문자열이거나, userName
이 null인 경우 null입니다.
예제
다음 코드 예제에서는 인증된 사용자를 메서드에서 반환된 URL로 리디렉션합니다 GetRedirectUrl .
중요
이 예제에서는 잠재적 보안 위협을 사용자 입력을 허용 하는 텍스트 상자가 포함 되어 있습니다. 기본적으로 ASP.NET 웹 페이지는 사용자 입력 내용에 스크립트 또는 HTML 요소가 포함되어 있지 않은지 확인합니다. 자세한 내용은 Script Exploits Overview를 참조하세요.
<%@ 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 속성을 참조하세요.
적용 대상
추가 정보
.NET