2010-08-09 7 views
1

J'utilise l'authentification par formulaire sur mon site Web VS-2005.ASP.NET - FormsAuthentication - impossible de rediriger après la connexion

En cas de fausses informations d'identification ou en demandant explicitement des pages protégées, le site Web peut rediriger l'utilisateur vers la page de connexion. Toutefois, lorsque les informations d'identification correctes sont fournies, l'application ne peut pas rediriger l'utilisateur vers la page souhaitée. Pendant le débogage, j'ai trouvé que 'Request.IsAuthenticated = False' juste avant de rediriger l'utilisateur vers la page voulue. Pendant le codage, j'ai pensé que cette propriété sera automatiquement définie après que j'ai généré le ticket d'authentification. Alors dois-je le définir explicitement dans le bouton Soumettre, cliquez sur la page de connexion après validation?

BTW Je n'ai pas utilisé les méthodes 'GetAuthcookie', 'SetAuthCookie' ou 'RedirectFromLoginPage'. Je poste le code à l'intérieur du bouton Soumettre, cliquez sur la page de connexion ainsi que sur les étiquettes Authentification et Autorisation dans le fichier web.config.

<authentication mode="Forms"> 
    <forms name=".ASPXFORMSDEMO" loginUrl="~/Login.aspx" cookieless="UseCookies" path="~/"/> 
</authentication> 
<authorization> 
    <deny users="?"/> 
</authorization> 

Protected Sub btnsubmit_click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnsubmit.Click 
    'here first validate if the user is valid user 
    ad = New Aranya_Data 
    Dim code As Integer = ad.validateuser(txtuserid.Text, txtpwd.Text) 

    'need to implement forms authentication here 
    If code = 0 Then 
     'creating the authentication ticket 

     Dim tkt As FormsAuthenticationTicket 
     Dim cookiestr As String = "" 
     Dim ck As HttpCookie 
     tkt = New FormsAuthenticationTicket(1, txtuserid.Text, DateTime.Now, DateTime.Now.AddMinutes(30), chkRemember.Checked, "14062010") 
     cookiestr = FormsAuthentication.Encrypt(tkt) 
     ck = New HttpCookie(FormsAuthentication.FormsCookieName, cookiestr) 
     If chkRemember.Checked Then 
      ck.Expires = tkt.Expiration 
     End If 
     ck.Path = FormsAuthentication.FormsCookiePath 
     Response.Cookies.Add(ck) 
     Dim strRedirect As String = "" 
     strRedirect = Request("ReturnUrl") 
     If strRedirect Is Nothing Then 
      strRedirect = "~/Second.aspx" 
     End If 
     Response.Redirect(strRedirect & "?usr=" & tkt.Name, True) 
    Else 
     MsgBox("Invalid Login credentials! Please try again.", MsgBoxStyle.OkOnly, "Please Note") 
    End If 

End Sub 

S'il vous plaît laissez-moi savoir si vous voulez que je poste plus de code ou d'information.

Répondre

1

J'ai réussi à trouver une solution et cela fonctionne maintenant. À l'intérieur des balises 'authentication', l'attribut 'path' de la balise 'forms' dans web.config a été corrigé, ce qui a permis de résoudre le problème. Maintenant, mon étiquette d'authentification se présente comme suit: -

<authentication mode="Forms"> 
    <forms name=".ASPXFORMSDEMO" loginUrl="~/Login.aspx" cookieless="UseCookies" /> 
</authentication> 

Merci