FormsAuthentication.GetRedirectUrl(String, Boolean) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt die Umleitungs-URL für die ursprüngliche Anforderung zurück, die die Umleitung zur Anmeldeseite verursacht hat.
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
Parameter
- userName
- String
Der Name des authentifizierten Benutzers.
- createPersistentCookie
- Boolean
Konvertiert die Zeichenfolgendarstellung einer Zahl in einem angegebenen Stil und einem kulturspezifischen Format in die entsprechende 32-Bit-Ganzzahl mit Vorzeichen.
Gibt zurück
Eine Zeichenfolge, die die Umleitungs-URL enthält, oder NULL, wenn userName
NULL ist.
Beispiele
Im folgenden Codebeispiel werden authentifizierte Benutzer an die von der GetRedirectUrl Methode zurückgegebene URL umgeleitet.
Wichtig
Dieses Beispiel enthält ein Textfeld, das Benutzereingaben akzeptiert, die eine potenzielle Sicherheitsrisiken darstellen. Standardmäßig stellen ASP.NET-Webseiten sicher, dass Benutzereingaben keine Skript- oder HTML-Elemente enthalten. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.
<%@ 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>
Hinweise
Sie können diese Methode verwenden, wenn Sie die Umleitung im Anwendungscode ausführen möchten, anstatt die RedirectFromLoginPage Methode zu verwenden.
Die GetRedirectUrl Methode gibt die in der Abfragezeichenfolge angegebene URL mithilfe des ReturnURL
Variablennamens zurück. Beispielsweise gibt die Methode in der URL http://www.contoso.com/login.aspx?ReturnUrl=caller.aspx
die GetRedirectUrl Rückgabe-URL caller.aspx
zurück. Wenn die ReturnURL
Variable nicht vorhanden ist, gibt die GetRedirectUrl Methode die URL in der DefaultUrl Eigenschaft zurück.
ASP.NET fügt die Rückgabe-URL automatisch hinzu, wenn der Browser zur Anmeldeseite umgeleitet wird.
Standardmäßig muss die ReturnUrl
Variable auf eine Seite innerhalb der aktuellen Anwendung verweisen. Wenn ReturnUrl
auf eine Seite in einer anderen Anwendung oder auf einem anderen Server verwiesen wird, gibt die Methoden die GetRedirectUrl URL in der DefaultUrl Eigenschaft zurück. Wenn Sie die Rückgabe-URL zulassen möchten, auf eine Seite außerhalb der aktuellen Anwendung zu verweisen, müssen Sie die Eigenschaft true
auf die enableCrossAppRedirects
EnableCrossAppRedirects Verwendung des Attributs des Formularkonfigurationselements festlegen.
Diese Methode erstellt kein Cookie.
Wichtig
Wenn Sie die EnableCrossAppRedirects Eigenschaft festlegen, true
um anwendungsübergreifende Umleitungen zu ermöglichen, handelt es sich um eine potenzielle Sicherheitsbedrohung. Weitere Informationen finden Sie in den Ausführungen zur EnableCrossAppRedirects-Eigenschaft.