FormsAuthentication.GetRedirectUrl-Methode
Gibt den Umleitungs-URL für die ursprüngliche Anforderung zurück, die die Umleitung zur Anmeldeseite verursacht hat.
Namespace: System.Web.Security
Assembly: System.Web (in system.web.dll)
Syntax
'Declaration
Public Shared Function GetRedirectUrl ( _
userName As String, _
createPersistentCookie As Boolean _
) As String
'Usage
Dim userName As String
Dim createPersistentCookie As Boolean
Dim returnValue As String
returnValue = FormsAuthentication.GetRedirectUrl(userName, createPersistentCookie)
public static string GetRedirectUrl (
string userName,
bool createPersistentCookie
)
public:
static String^ GetRedirectUrl (
String^ userName,
bool createPersistentCookie
)
public static String GetRedirectUrl (
String userName,
boolean createPersistentCookie
)
public static function GetRedirectUrl (
userName : String,
createPersistentCookie : boolean
) : String
Parameter
- userName
Der Name des authentifizierten Benutzers.
- createPersistentCookie
Dieser Parameter wird ignoriert.
Rückgabewert
Eine Zeichenfolge, die den Umleitungs-URL enthält.
Hinweise
Sie können diese Methode verwenden, wenn Sie die Umleitung im Anwendungscode ausführen möchten, statt die RedirectFromLoginPage-Methode zu verwenden.
Die GetRedirectUrl-Methode gibt den URL zurück, der in der Abfragezeichenfolge durch den ReturnURL-Variablennamen angegeben ist. Beispiel: Für den URL https://www.contoso.com/login.aspx?ReturnUrl=caller.aspx
gibt die GetRedirectUrl-Methode den Rückgabe-URL caller.aspx
zurück. Wenn die ReturnURL-Variable nicht vorhanden ist, gibt die GetRedirectUrl-Methode den URL in der DefaultUrl-Eigenschaft zurück.
Wenn der Browser zur Anmeldeseite umgeleitet wird, fügt ASP.NET den Rückgabe-URL automatisch hinzu.
Die ReturnUrl-Variable muss standardmäßig auf eine Seite innerhalb der aktuellen Anwendung verweisen. Wenn ReturnUrl auf eine Seite in einer anderen Anwendungen oder auf einem anderen Server verweist, gibt die GetRedirectUrl-Methode den URL in der DefaultUrl-Eigenschaft zurück. Wenn Sie zulassen möchten, dass der URL auf eine Seite außerhalb der aktuellen Anwendung verweist, müssen Sie die EnableCrossAppRedirects-Eigenschaft mit dem enableCrossAppRedirects-Attribut des forms-Konfigurationselements auf true festlegen.
Sicherheitshinweis |
---|
Das Festlegen der EnableCrossAppRedirects-Eigenschaft auf true, um anwendungsübergreifende Umleitungen zuzulassen stellt ein Sicherheitsrisiko dar. Wenn Sie anwendungsübergreifende Umleitungen zulassen, besteht die Gefahr, dass böswillige Websites Benutzern mithilfe Ihrer Anmeldeseite vortäuschen, dass sie eine sichere Seite auf Ihrer Website verwenden. Sie können die Sicherheit bei der Verwendung anwendungsübergreifender Umleitungen verbessern, indem Sie die GetRedirectUrl-Methode überschreiben, um nur Umleitungen auf genehmigte Websites zuzulassen. |
Beispiel
Im folgenden Codebeispiel werden authentifizierte Benutzer an den URL umgeleitet, der von der GetRedirectUrl-Methode zurückgegeben wird.
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<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 = PersistCheckBox.Checked
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>
<head>
<title>Forms Authentication Login</title>
</head>
<body>
<form runat="server">
<span style="BACKGROUND: #80ff80">
<h3>Login Page</h3>
</span>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><P>
<table border=0>
<tbody>
<tr>
<td>Username:</td>
<td><asp:TextBox id="UserNameTextBox" type="text" 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>
<tr>
<td>Check here if this is <u>not</u><br>a public computer:</td>
<td><asp:CheckBox id="PersistCheckBox" runat="server" autopostback="true" /></td>
</tr>
</tbody>
</table>
<input type="submit" value="Login" runat="server" onserverclick="Login_Click" />
</form>
</body>
</html>
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<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 = PersistCheckBox.Checked;
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>
<head>
<title>Forms Authentication Login</title>
</head>
<body>
<form runat="server">
<span style="BACKGROUND: #80ff80">
<h3>Login Page</h3>
</span>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><P>
<table border=0>
<tbody>
<tr>
<td>Username:</td>
<td><asp:TextBox id="UserNameTextBox" type="text" 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>
<tr>
<td>Check here if this is <u>not</u><br>a public computer:</td>
<td><asp:CheckBox id="PersistCheckBox" runat="server" autopostback="true" /></td>
</tr>
</tbody>
</table>
<input type="submit" value="Login" runat="server" onserverclick="Login_Click" />
</form>
</body>
</html>
Plattformen
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
FormsAuthentication-Klasse
FormsAuthentication-Member
System.Web.Security-Namespace