Freigeben über


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.

SicherheitshinweisSicherheitshinweis

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

Weitere Ressourcen

Sicherheit für ASP.NET-Webanwendungen