Link to home
Start Free TrialLog in
Avatar of TonyReba
TonyRebaFlag for United States of America

asked on

Asp.net Login control customize error message

I am trying to customize the login control so when the user enters a bad username or password it will show a message in the label below, the problem is that this is not firing up, and instead the page is refreshed (when incorrect login info is entered and I see  asp.net "

message Error authenticating user. Logon failure: unknown user name or bad password"

How can I show a pop up java message or at least tell my label to show the error?

I am using the following event but doesnt seem to work? any ideaS?
Protected Sub Login1_LoginError(ByVal sender As Object, ByVal e As System.EventArgs) Handles Login1.LoginError

        'There was a problem logging in the user


        'Display the failure message in a client-side alert box
        ClientScript.RegisterStartupScript(Me.GetType(), "LoginError", _
        String.Format("alert('{0}');", Login1.FailureText.Replace("'", "\'")), True)



        'See if this user exists in the database
        Dim userInfo As MembershipUser = Membership.GetUser(Login1.UserName)

        If userInfo Is Nothing Then
            'The user entered an invalid username...
            lblLoginErrorDetails.Text = "There is no user in the database with the username " & Login1.UserName
        Else
            'See if the user is locked out or not approved
            If Not userInfo.IsApproved Then
                lblLoginErrorDetails.Text = "Your account has not yet been approved by the site's administrators. Please try again later..."
            ElseIf userInfo.IsLockedOut Then
                lblLoginErrorDetails.Text = "Your account has been locked out because of a maximum number of incorrect login attempts. You will NOT be able to login until you contact a site administrator and have your account unlocked."
            Else
                'The password was incorrect (don't show anything, the Login control already describes the problem)
                lblLoginErrorDetails.Text = String.Empty
            End If
        End If


        ''Display the failure message in a client-side alert box
        'ClientScript.RegisterStartupScript(Me.GetType(), "LoginError", _
        'String.Format("alert('{0}');", Login1.FailureText.Replace("'", "\'")), True)

    End Sub

Open in new window

Avatar of guru_sami
guru_sami
Flag of United States of America image

what is the code executed prior to that?
Avatar of TonyReba

ASKER

is a function to authenticate
Public Function IsAuthenticated(ByVal domain As String, ByVal username As String, ByVal pwd As String) As Boolean

        Dim domainAndUsername As String = domain & "\" & username
        Dim entry As DirectoryEntry = New DirectoryEntry(_path, domainAndUsername, pwd)

        Try
            'Bind to the native AdsObject to force authentication.			
            Dim obj As Object = entry.NativeObject
            Dim search As DirectorySearcher = New DirectorySearcher(entry)

            search.Filter = "(SAMAccountName=" & username & ")"
            search.PropertiesToLoad.Add("cn")
            Dim result As SearchResult = search.FindOne()

            If (result Is Nothing) Then
                Return False
            End If

            'Update the new path to the user in the directory.
            _path = result.Path
            _filterAttribute = CType(result.Properties("cn")(0), String)

        Catch ex As Exception
            Throw New Exception("Error authenticating user. " & ex.Message)
        End Try

        Return True
    End Function

Open in new window

Ok you are getting this message:

 Error authenticating user. Logon failure: unknown user name or bad password"

That is from this catch-block:

Catch ex As Exception
            Throw New Exception("Error authenticating user. " & ex.Message)
        End Try

So you will never hit the Login_Error code.

Plus, since you are trying to authenticate against AD, what you are doing inside LoginError handler doesn't make sense because in there you are trying to use built-in memebership provider.
So how can I solve this, and have a customize error message in the login form?

Do I remove the try catch block?
can I just redirect here?

 If (result Is Nothing) Then
                Return False
            End If
ASKER CERTIFIED SOLUTION
Avatar of guru_sami
guru_sami
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Can I only refresh the login page when the ad username or password doesnt match?
upss I am an idiot,  that worked,,

Throw New Exception("Error authenticating user. " & ex.Message)

was messing everything!!