向用户显示消息,然后放弃会话

时间:2012-01-11 17:49:17

标签: asp.net vb.net authentication

我已将双因素身份验证添加到我的移动ASP.Net Web App中。当用户成功输入其用户名和密码后,将通过电子邮件将PIN码通过电子邮件发送到存储在数据库中的电子邮件地址。我遇到的问题是,在通知用户他们没有定义电子邮件然后重新加载登录页面但我的代码没有通知用户而是重新加载Login.aspx页面之后:

Private Sub GeneratePin()
    Dim r As New Random(System.DateTime.Now.Millisecond)
    _Pin = CStr(r.Next(1000, 99999))
    _email = CIAppGlobals.CurrentUser.UsrContactEmail

    With lblPin
        .Text = "PIN has been emailed to the you please check your email now."
    End With

    If Not String.IsNullOrEmpty(_email) Then
        Dim Message As String = " Your Mobile PIN number is " & _Pin & vbNewLine & "From IP Address: " & CIAppGlobals.AppSettings.ClientIP

        Tools.SendEmail(CIAppGlobals.CurrentUser.UsrContactEmail, "Mobile App - Two Factor Authentication", Message)

    Else
        Dim sText As String = "Please contact the Administrator You do not have an email address defined within Application."
        'DirectCast(HttpContext.Current.Handler, System.Web.UI.Page).ClientScript.RegisterStartupScript(Me.[GetType](), "test", "alert('" & sText & "')", True)
        Response.Write("<script>alert('" & sText & "');</script>")
        Thread.Sleep(5000)

        'Session.Abandon()
        'FormsAuthentication.SignOut()

        Response.Redirect(ParentFolder & "/Login.aspx")
    End If

End Sub

1 个答案:

答案 0 :(得分:2)

您对Response.Redirect()的来电导致您输出的任何内容都无法显示。你需要删除它,然后输出一个链接或一些javascript进入登录页面。

另外:您需要移除对Thread.Sleep()的通话。这导致了不必要的延迟并且让asp.net线程忙于无所事事。它不是你认为的那样......