Я использую проверку подлинности с помощью форм на своем веб-сайте VS-2005.
В случае неправильных учетных данных или при явном запросе защищенных страниц веб-сайт может перенаправить пользователя на страницу входа.Однако, когда предоставлены правильные учетные данные, приложение не может перенаправить пользователя на нужную страницу.
Во время отладки я обнаружил, что «Request.IsAuthenticated = False» непосредственно перед тем, как перенаправить пользователя на нужную страницу.,Во время кодирования я думал, что это свойство будет установлено в true автоматически после того, как я сгенерирую билет Аутентификации.Так что мне нужно явно установить его внутри нажатия кнопки отправки на странице входа в систему после проверки?
Кстати, я не использовал методы GetAuthcookie, SetAuthCookie или RedirectFromLoginPage.Я отправляю код внутри кнопки отправки, нажмите на странице входа в систему, а также теги аутентификации и авторизации в 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
Пожалуйста, дайте мне знать, если вы хотите, чтобы я опубликовал больше кода или информации.