TonyReba
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?
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
what is the code executed prior to that?
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
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.
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.
ASKER
So how can I solve this, and have a customize error message in the login form?
Do I remove the try catch block?
Do I remove the try catch block?
ASKER
can I just redirect here?
If (result Is Nothing) Then
Return False
End If
If (result Is Nothing) Then
Return False
End If
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Can I only refresh the login page when the ad username or password doesnt match?
ASKER
upss I am an idiot, that worked,,
Throw New Exception("Error authenticating user. " & ex.Message)
was messing everything!!
Throw New Exception("Error authenticating user. " & ex.Message)
was messing everything!!