ASP.NET - FormsAuthentication - невозможно перенаправить после входа в систему - PullRequest
1 голос
/ 09 августа 2010

Я использую проверку подлинности с помощью форм на своем веб-сайте 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

Пожалуйста, дайте мне знать, если вы хотите, чтобы я опубликовал больше кода или информации.

1 Ответ

1 голос
/ 10 августа 2010

Мне удалось найти решение, и оно работает сейчас.

Внутри тегов «authentication» удален атрибут «path» для тега «forms» в web.config, это решило проблему Теперь мой тег аутентификации выглядит следующим образом: -

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

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...